ListView的优化

ListView优化技巧
本文介绍了针对Android ListView组件的三种优化方法:使用ViewHolder模式减少findViewById的调用;通过判断convertView是否为空来避免不必要的视图重建;以及实现分页加载数据以提高性能和用户体验。

(1)listView设置BaseAdapter的时候,每一个item都是通过adapter的getView(intposition, View convertView, ViewGroup parent)方法获得的,并且ListView中只有第一屏的item需要新建,它的引用会被存在RecycleBin对象内,在拖动时后面的item实际上是重用了之前创建的item,所以在getView()方法中要判断如果当前item对应的view是null的话,就新建一个view对象,否则就复用convertView,而不是每次调用getView(),都新建一个view对象,这样又耗时又消耗内存。

(2) 如果item结构比较复杂,view中的组件比较多的话,查找到View中的所有组件会比较耗时,可以新建一个静态的内部类ViewHolder,里面的成员变量跟view中包含的组件的类型个数相同,将findviewById的结果赋值给ViewHolder中对应的成员变量,再通过setTag()方法将view对象和holder对象绑定,这样只需要在刚开始的时候查找几次组件,之后就能复用ViewHolder里面保存的引用。

(3) 要显示的数据比较多的时候,一次性加载完所有数据又耗时,又占用非常大的内存(如网络请求新闻内容,如果一次性加载所有的新闻内容,可能oom,且activity会空白较长时间),这时采用分页加载,用户滑动到列表底端时自动加载下一页数据。


参考链接:

http://www.tuicool.com/articles/uyiAZzA

http://www.oschina.net/question/54100_31819


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值