构成Android应用的一个重要的UI构件就要算ListView了,我们项目中用得很多,所以总结了以下的经验进行分享探讨
1、重用Adapter
getView函数中的ConvertView
列表的每一行Item通常都是可复用的,重用可以避免多次创建,让滚动更加顺滑。
(注意:2.3系统在复用View的时候有些状态会被保留,比如GONE的状态,所以在getView中重用convertView时要对Visibility属性重新进行设置)
2、使用ViewHolder来保存通过findViewById进行查找的元素
通常我们会使用findViewById来查找某个布局里边的TextView或者Button,进行相应的赋值或者操作。
在ListView中,由于大量的View都是可重用的,所以我们可以创建一个ViewHolder类来把这些查找到的元素保存起来,然后使用setTag
设置到convertView中。重用时候只是要使用getTag获取即可。这样避免了多次查找浪费运算资源
3、使用RelativeLayout替代掉Item中的层次过多的LinearLayout
平常情况下,LinearLayout布局会方便甚至快过RelativeLayout,但随着层次的加深前者速度会越来越慢。这样在存在多个Item的列表中就会
更加明显,我们可以使用一层的RelativeLayout来替换掉布局中有好几个层次的LinearLayout来加快计算速度
4、在快速滚动的时候对于一些比较消耗系统资源的动作不进行执行
比如手机QQ在对联系人列表进行快速滑动时依然可以保持快速滑动,这对于要加载很多图像的App是很难实现的,我们项目也遇过类似的卡顿
问题。结果采用了跟手机QQ一样的小策略简单的解决了这个问题,关键就是头像在滚动停止的时候才进行加载