1、listView的两个属性
ListView.setChoiceModel:设置ListView回应用户响应点击的方式;
ListVeiw.setTextFilterEnable(true):激活过滤功能,用户可以在软键盘上输入文字,ListView可以自动匹配用户输入的文字。
2、效果实现
第一、listView
第二、一个listView列表里面水平布置了一个imageView和一个textView
第三、实现点击进行改变背景色,用到<selector></selector>标签
main.xml:用来定义ListView的布局
list_item.xml:用来定义ListView里面元素的布局
selector.xml:用来定义当用户点击时的改变
3.自定义listView的时候,当不使用android:cacheColorHint="@000000"会出现下面选中一个空间黑色色底的情况,破坏整体美观:
4.当不使用android:listSelector属性,默认会显示选中的item为橙黄底色,有时候我们需要去掉这种效果:
5、listView的缓存(来自:http://www.itkee.com/developer/detail-1ec.html)
listView针对每个item,都会调用adapter的getView()方法,要求adapter返回一个View供item显示。其实现原理如何呢?
在AbListView类里面,有个obtainView函数,每次ListView想获得一个子View比如滚动时,就找它,这个函数关键代码如下:
//从回收站中获得View
scrapView = mRecycler.getScrapView(position);
//通过getView获得View,注意,这里scrapView被作为参数传入。
child = mAdapter.getView(position, scrapView, this);
if (child != scrapView) {
//如果不使用回收站中的View,则从新放回去
mRecycler.addScrapView(scrapView);
} else {
//使用回收站中的View
isScrap[0] = true;
child.dispatchFinishTemporaryDetach();
}
看看getView的默认实现,在CursorAdapter中:
View v;
//convertView这个就是上面的scrapView
if (convertView == null) {
v = newView(mContext, mCursor, parent);
} else {
v = convertView;
}
//这里将数据赋值到界面上
bindView(v, mContext, mCursor);
return v;
可以看书,默认的getView,首先从回收站中获取,除非回收站得不到了才new一个出来。