ListView与Adapter使用要点
2013-09-07 18:01
239 查看
说错的话,希望能够指出,互相进步嘛。
补充:
在接着使用ListView的时候,又发现一个很奇怪的现象。调用notifyDataSetChanged()之后,ListView在重新getView()时,所有的convertView的顺序都逆序了。请看下面截图:
这应该是由于recycleBin是stack结构而引起。
其它:
1. Disable divider:
android:divider="#00000000"
android:dividerHeight="0dp"
2. Disable ListView selector:
convertView.setOnClickListener(null);
如果只是要去掉颜色,可以用android:listSelector="#00000000"
3. Disable header divider:
android:headerDividersEnabled="false"
4. getItemViewType(int)与getItemViewType(int)
getItemViewType(int) can not return int value larger than getViewTypeCount().
Otherwise you will get java.lang.ArrayIndexOutOfBoundsException at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:3523)
ListView会根据不同的ViewType返回相应type的convertView.
一般写法:
getView() {
switch (getItemViewType(position)) {
case type1:
if(convertView == null) {
} else {
}
break;
case type2:
default:
if(convertView == null) {
} else {
}
break;
}
return convertView;
}
getItemViewType(int position) {
// 根据场景,一般有:
// 1. 不同的item type对应的position是固定的,那么ListView的data可以分别存放
// 2. 不同的item type对应的position是不固定的,那么可以把ListView的data统一放在List<Object>中,
// 然后使用instanceof来判断Object的类型进而区分position对应的view type.
}
补充:
在接着使用ListView的时候,又发现一个很奇怪的现象。调用notifyDataSetChanged()之后,ListView在重新getView()时,所有的convertView的顺序都逆序了。请看下面截图:
这应该是由于recycleBin是stack结构而引起。
其它:
1. Disable divider:
android:divider="#00000000"
android:dividerHeight="0dp"
2. Disable ListView selector:
convertView.setOnClickListener(null);
如果只是要去掉颜色,可以用android:listSelector="#00000000"
3. Disable header divider:
android:headerDividersEnabled="false"
4. getItemViewType(int)与getItemViewType(int)
getItemViewType(int) can not return int value larger than getViewTypeCount().
Otherwise you will get java.lang.ArrayIndexOutOfBoundsException at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:3523)
ListView会根据不同的ViewType返回相应type的convertView.
一般写法:
getView() {
switch (getItemViewType(position)) {
case type1:
if(convertView == null) {
} else {
}
break;
case type2:
default:
if(convertView == null) {
} else {
}
break;
}
return convertView;
}
getItemViewType(int position) {
// 根据场景,一般有:
// 1. 不同的item type对应的position是固定的,那么ListView的data可以分别存放
// 2. 不同的item type对应的position是不固定的,那么可以把ListView的data统一放在List<Object>中,
// 然后使用instanceof来判断Object的类型进而区分position对应的view type.
}
相关文章推荐
- ListView与Adapter使用要点
- ListView与Adapter使用要点
- ListView与Adapter使用要点 ConverView问题。。
- ListView与Adapter使用要点
- ListView与Adapter使用要点
- Android的ListView与Adapter使用要点
- ListView与Adapter使用要点
- android开发中ListView与Adapter使用要点介绍
- ListView与Adapter使用要点
- ListView与Adapter使用要点
- Android的ListView与Adapter使用要点
- android开发中ListView与Adapter使用要点介绍
- 3.2列表的使用listview与BaseAdapter、simpleAdapter、ArrayAdapter
- listView中为什么使用setlistAdapter
- android ListView布局之三(使用自定义的Adapter绑定数据,通过contextView.setTag绑定数据)有按钮的ListView
- 使用SimpleAdapter创建ListView
- ListFragment 使用ListView and 自定义Adapter
- Android----ListView入门知识--各种Adapter配合使用
- Android异步下载网络图片&android解析xml文件的方式&使用Adapter为ListView提供数据
- ListView之SimpleAdapter的使用 .