您的位置:首页 > 其它

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.

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: