
- 外文名
- LISTVIEW
- 类 型
- 控件
- 功 能
- 可使用四种不同视图显示项目
- 属 性
- 计算机技术
-
ListView
2011-05-15 14:13:00ListView 是 AdapterView的子类,AdapterView.OnItemClickListener、AdapterView.OnItemSelectedListener 这些关乎Item的操作都是在AdapterView中就有的抽象。 ListView 只是在此基础上加了一些其他的功能,...1. 基本使用方法
ListView 是 AdapterView的子类,AdapterView.OnItemClickListener、AdapterView.OnItemSelectedListener 这些关乎Item的操作都是在AdapterView中就有的抽象。
ListView 只是在此基础上加了一些其他的功能,比如:addFooterView、addHeaderView 等,//使用示例
ListView listView=new ListView(context);
listView.setCacheColorHint(0);//滚动时透明
Drawable color=new ColorDrawable(0xFFFFFFFF); //或使用Color.parseColor("#FFFFFF"),若使用0x00FFFFFF显示不出来。
listView.setDivider(color);//设置分割线
listView.setDividerHeight(1);xml配置:
<ListView android:id="@+id/listView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:divider="#FFF" android:dividerHeight="1px" android:layout_margin="10dip"/>
2.Adapter介绍 http://code.google.com/p/androidlearn/wiki/Adapter
ArrayAdapter是一个绑定View到一组对象的通用类。默认情况下,ArrayAdapter绑定每个对象的toString值到在layout中预先定义的TextView控件上。 可变通的,构造函数允许你使用更加复杂的layout或者通过重写getView方法来扩展类从而使用TextView的替代物(如ImageView或嵌套的layout)。
The android.R.layout.simple_list_item_1.xml Android example source code
重写Adapter类需要实现的方法 http://code.google.com/p/androidlearn/wiki/Adapter_custom
需要重写Adapter类的四个方法
public int getCount();public Object getItem(int position);
public long getItemId(int position);
public View getView(int position, View convertView, ViewGroup parent);
3.过滤
listView.setTextFilterEnabled(true);
listView.setFilterText("a");会显示出一个过滤后的新的ListView层
Android的数据过滤机制 http://winuxxan.blog.51cto.com/2779763/509931
4.多选
ListView 可以以多种样式展现,比如多选式设置 ArrayAdapter<T>() 的第二个参数为 android.R.layout.simple_list_item_multiple_choice,但此时的列表项被选中后并不会出现“绿勾”,还需 ListView的 setChoiceMode(ListView.CHOICE_MODE_MULTIPLE) 方法辅助。
取多选的结果
SparseBooleanArray sparseBooleanArray=listView.getCheckedItemPositions();
int size=sparseBooleanArray.size();
for(int i=0;i<size;i++)
{
int index=sparseBooleanArray.keyAt(i);
//如果选中后中再去掉选择,这个项仍被选中了,在这里需要再次判断
if(listView.getCheckedItemPositions().get(index))
{
.....
}
}5.刷新
BaseAdapter.notifyDataSetChanged();
6.ArrayAdapter
例 ArrayAdapter<Object> listViewAdapter=new ArrayAdapter<Object>(this,android.R.layout.simple_list_item_1,objList);
listView.setAdapter(listViewAdapter);7.快速滑动效果,在开始普通滚动列表后,滑动控制块出现。
listView.setFastScrollEnabled(true);//就这么简单
8.addHeaderView
1.addHeaderView在setAdapter之前调用,2.HeaderView不要设置setLayoutParams, 3.onClick的position
EditText editText=new EditText(this);
editText.setText("abc");
listView.addHeaderView(editText);9.
-
Android实现ListView的A-Z字母排序和过滤搜索功能完整实例源码
2013-10-13 22:23:05Android实现ListView的A-Z字母排序和过滤搜索功能,完整源码,小伙伴需要的来CSDN下载吧!项目详情http://blog.csdn.net/xiaanming/article/details/12684155 -
横向ListView的完整实现 包含基于横向listview做的一个小相册demo
2014-03-15 19:27:13横向ListView的完整实现 包含基于横向listview做的一个小相册demo 具体过程参见:http: blog csdn net yanzi1225627 article details 21294553 -
ListView嵌套ListView 或者RecyclerView嵌套ListView
2017-10-19 10:07:031.ListView嵌套ListView 或者RecyclerView嵌套ListView都只能显示一行,原因是不知ListView的高是多少,如果完全显示嵌套的ListView,则需要修改ListView的测量规则 public class MyListView extends ListView { ...1.ListView嵌套ListView 或者RecyclerView嵌套ListView都只能显示一行,原因是不知ListView的高是多少,如果完全显示嵌套的ListView,则需要修改ListView的测量规则
public class MyListView extends ListView { public MyListView(Context context) { super(context); } public MyListView(Context context, AttributeSet attrs) { super(context, attrs); } public MyListView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int height = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE / 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, height); } }
2.布局文件中使用
<com.utils.MyListView android:id="@+id/fragment_comment_listview" android:layout_width="match_parent" android:layout_height="wrap_content"></com.utils.MyListView>
-
ListView滑动删除 ,仿腾讯QQ 源码程序
2014-04-04 23:15:25ListView滑动删除 ,仿腾讯QQ的源码 -
android listView嵌套ListView
2017-08-22 08:55:46android listView嵌套ListView,子listView第一个显示全了,其他的没显示。  下面是我的代码。帮看看哪里有问题。。 这是第一个... -
ListView中嵌套ListView
2017-06-20 15:48:27开发过程中很多次都会遇到一个重大问题,设计中总是要listview中嵌套一个listview,但是很多基本的实现就直接在外层item中直接一个listview,这样就导致了listview在自身测量的时候无法测量到item的高度,这样并不会...开发过程中很多次都会遇到一个重大问题,设计中总是要listview中嵌套一个listview,但是很多基本的实现就直接在外层item中直接一个listview,这样就导致了listview在自身测量的时候无法测量到item的高度,这样并不会报错,只是显示不全,一般只能显示嵌套listview的第一个条目。然后很多人为此就放弃了,然后通过listview的属性addheader或者addFooter的方法来添加,但是原理还是一样一样不会成功的。
下面就要来介绍我采用的方式了,就是在adapter里面对item进行测量,然后获取item的个数直接将listview的高度写死。多说无益,直接看代码
ListView lv_skills = viewHolder.getView(R.id.lv_skills, ListView.class); final ArrayList<HashMap<String, Object>> listData = new ArrayList<>(); listData.clear(); try { JSONArray jsonArray = new JSONArray(info.get("studylist").toString()); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsoo = jsonArray.getJSONObject(i); HashMap<String, Object> map1 = new HashMap<String, Object>(); Iterator it = jsoo.keys(); while (it.hasNext()) { String key = (String) it.next(); String value = jsoo.getString(key); map1.put(key, value); } listData.add(map1); } ViewGroup.LayoutParams params = lv_skills.getLayoutParams(); int height = 0; height = listData.size() * DensityUtil.dip2px(context, 110); params.height = height; lv_skills.setLayoutParams(params); } catch (JSONException e) { e.printStackTrace(); }
为什么我写个110呢,因为我的子listview的item的高度是110dp,这个必须限制高度,要不然在外层测量的时候测量不出来的,或者你在里层去测量,然后同样的方法走一遍。
这样就很轻松的解决了listview中嵌套listview的问题了
-
ListView嵌套ListView优化
2014-05-07 21:43:46在做业务时候,一个ListView显示多种数据类型,我们想到的方法是ListView在嵌套一个ListView,对于子ListView 占父ListView的一行,就解决了问题,但是这样的逻辑是不是有点奇怪呢? 第一,父ListView的长度size...在做业务时候,一个ListView显示多种数据类型,我们想到的方法是ListView在嵌套一个ListView,对于子ListView
占父ListView的一行,就解决了问题,但是这样的逻辑是不是有点奇怪呢?
第一,父ListView的长度size需要加1,因为增加了一行放子listView
public int getCount() {
return datas.size()+1;
}
第二,需要判断在什么地方插入子listView ,就要用到getViewTypeCount()和getItemViewType (int position)两个方法
public int getItemViewType (int position){
if(position==CHRILDLOCATION){//插入子ListView位置
return TYPE_0;//TYPE_0表示子ListView标志
}
return TYPE_1;//TYPE_1表示父ListView标志}
第三,需要在父UI更新时候,当position>CHRILDLOCATION时对position-1,因为你在前面插入了子listView,其实后
面得到的position,都占了一个位置.需要这时候减去
这三步理解起来就让人够烦了,很混乱吧,还有更糟糕的事情,就是,子ListView你还要new 一个Adapter来遍历出它的item,这样就形成循环中嵌套循环,你的代码性能是不是很差。
重点来了:
我们可以在传入Adapter的数据中做文章,把不同的数据类型都用Object代替,然后把Object放入List集合,
在Adapter,判断类型,比如:一个商品列表,中间会杂着一些商品主题团,我们就通过List<Object>封装这两种数据类型,实现对上面ListView嵌套的讲解。
第一,在Adapter之外封装成一个List<Object>,就不需要在用到子ListView了,数据都在list中,也就不需要对datas.size()+1的操作了,只需要判断数据类型,然后做上面第二步操作;
public int getItemViewType (int position){
if(datas.get(position) instanceof “商品主题团”){
return TYPE_0;//TYPE_0表示商品主题团
}
return TYPE_1;//TYPE_1表示商品
}
完了,也就不需要对数据更新Ui时候减一操作,避免了降低了出错的概率。
主要是不需要在getView中在new Adapter了,性能提高很大。 -
android ListView 嵌套 ListView
2018-08-11 18:24:56看上去效果还是不错,不过现在有个刷新问题一直没能解决,刷新的时候里面的adapter进行刷新的时候总是会让里面的listview消失掉,应该是父listview先刷新完后,子listview还未刷新完成,导致测量的高度不对,就会... -
Flutter ListView详解
2018-11-15 22:51:49ListView详解ListView常用构造ListViewListView ListTileListView builderListView separatedListView custom ListView常用构造 ListView ListView ListTile ListView builder ListView separated ListView ... -
Android核心组件 ListView 详解
2016-05-28 19:47:58在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况。 ListView可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过... -
Android—— ListView 的简单用法及定制ListView界面
2017-04-14 12:13:46一、ListView的简单用法 2. 训练目标 1) 掌握 ListView 控件的使用 2) 掌握 Adapter 桥梁的作用 二、定制ListView界面 1.训练目标 1) 掌握 ListView 控件的使用 2) 掌握如何自定义 Adapter 的使用 -
ListView嵌套ListView时子ListView中的item显示不全
2019-04-28 13:53:55在子ListView设置adapter后调用下面方法即可解决。 public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { ... -
flutter ListView嵌套ListView滚动问题
2019-08-30 11:32:29在flutter开发中ListView嵌套ListView时,俩个ListView都会滚动,而不是一个整体,只需要设置子组件不滚动,并设置高度就可以解决这个问题 Widget build(BuildContext context) { return ListView( children: <... -
Android ListView嵌套ListView,子ListView展示不全
2018-04-20 15:56:27在适配器中,添加完子listView的适配器后,调用改方法,就可改善 public class Utility { public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.... -
解决listview 嵌套listview
2017-02-03 16:01:55这几个文件是我从某位大神的简书上得来的,但是一时找不到这位仁兄,如果看到,请联系我,我将注明转载地址。 前段时间公司要开发一个软件产品,项目经理和我们的设计狮发过来一份UI,看到这...首先listview 嵌套list -
listview可以嵌套listview吗
2015-04-29 12:11:56我的思路如图所示,大listview嵌套小listview,但是我发现一个问题是给小listview设置适配器后,传入的值与到达小listview getview时的值不一致(值多了好多个,而每一组数据都是乱的,比传入的数据多几个),不知道... -
ListView 组件
2019-09-25 23:13:17简介: ListView是最常用的可滚动组件之一 有三种构建方式: ListView ListView.builder ListView.separated 主要参数说明: scrollDirection: Axis.horizontal 水平列表 Axis.vertical 垂直列表 padding: 内... -
listview内嵌套listview高度问题
2015-04-14 06:53:53listview中嵌套了一个listview,里面的listview内的textview无法显示多行文字 -
Listview嵌套ListView点击事件冲突
2018-09-06 18:11:381.让外层listview的item的根布局拦截事件 android:descendantFocusability="blocksDescendants" 2.让内层的Listview不拦截事件: 重写Listview的onInterceptTouchEvent()方法使之返回false 3.内层... -
Listview嵌套Listview的实现方法
2016-11-12 09:32:20Listview嵌套Listview的实现 -
安卓实现listview嵌套listview
2015-10-26 04:42:47点击上面的最上面一项里面listview中的哪个小手机删除的时候把下面那一项里面的listview中的三项都删除了 还有就是前面三项都删了的时候删除第四项的时候下标越界 我的思路是我在删除的时候并不知道我删除的到底是... -
Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果 源码程序
2013-12-31 09:10:54Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果,项目详情http://blog.csdn.net/xiaanming/article/details/17539199 -
flutter listview 嵌套 listview Column GridView
2019-12-27 13:09:41经常遇到滚动需要嵌套滚动的情况,只需要增加两个属性即可: ...return ListView.builder( shrinkWrap: true, //解决无限高度问题 physics: NeverScrollableScrollPhysics(), //禁用滑动事件 ... -
Android 如何在ListView中嵌套ListView
2018-09-15 11:32:07因为项目MRD的需要,要在一个ListView中放入另一个ListView,也即在一个ListView的每个ListItem中放入另外一个ListView。但刚开始的时候,会发现放入的小ListView会显示不完全甚至是空白一片完全不显示,它的高度... -
WPF ListView
2016-09-09 00:15:43最近在研究WPF ListView数据绑定就不说了,想将ListView的样式弄成跟Winform一样的,就是每一个row能够设置不同的背景色和前景色,经过查询可以用下面的方法:ListViewItem item = this.listView.... -
解决ListView嵌套ListView遇到的问题
2014-06-13 20:45:30Listview嵌套会造成的问题主要是子listview的高度错误导致内容不能正常显示完,解决这个问题,我个人第一个想法就是重新计算子listview的高度,代码如下: private void setListViewHeightBasedOnChildren(ListView... -
ListView乱谈之ListView的布局
2015-09-26 18:09:15ListView 布局实现原理的简单总结 -
listview中嵌套子listview,解决子listview点击问题
2015-05-14 10:14:05项目需要listview中嵌套子listview,发现触发不了子listview点击事件,然后网上查询相关资料,亲测发现解决问题方法: 1.在子listview的item最外面的一层布局LinearLayout 添加 android:descendantFocusability=... -
listview,headerview,listview上的布局 跟随listview一起滑动
2015-08-04 07:55:49我想做一个这样的的布局!...下面是listview,我就是不清楚上面怎么做,如果用headerView 怎么才能实现响应的的点击响应事件!...我就是不知道listview上的布局要怎么做(listview上的布局会跟随listview一起滑动的~~!)
-
单元测试UnitTest+Pytest【Selenium3】
-
前端架构师-速成
-
Selenium3分布式与虚拟化
-
(新)备战2021软考网络工程师历年真题培训套餐
-
给IE/Edge写了个textarea resize拉伸的polyfill
-
web.xml配置编码过滤器解决中文乱码问题
-
idea闪退问题排查及解决
-
2020年网络安全排查总结报告
-
【数据分析-随到随学】机器学习模型及应用
-
Eclipse 安装(Neon 版本)
-
编译原理
-
中英文——文字转语音
-
极限配合与技术测量(第五版)习题册参考资料(答案)-B01-3636.pdf
-
vs官方使用教程中文版与英文版
-
2021全网最详细【WEB前端】从零入门实战教程,全课程119节
-
ccf csp 201609-2火车购票(python)
-
【2021】UI自动化测试框架(Selenium3)
-
SQL SERVER数据库 三种 恢复模式
-
国家注册信息安全工程师体系课程(CISP-PTE)
-
5G Toolbox User’s Guide.pdf