安卓控件之ListView

1.如何提高listview的效率?

当converview为空时,用setTag方法为每个View绑定一个存放控件的ViewHolder对象,当converview不为空时,重复利用已创建的View时,可以通过getTag方法快速找到ViewHolder,这样避免了对控件的层层查询。代码片段如下:

<span style="white-space:pre">	</span>if (convertView == null) {
                holder = new ViewHolder();
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }

①复用converview,使用历史的view,提升效率200%;

②自定义静态类ViewHolder,减少findbyId的次数,提升效率50%

③异步加载数据,分页加载数据

④使用弱引用imageview对象


2.当listview数据集改变后,如何更新listview?

使用adapter.notifyDataSetChanged()方法,这个会使listview重新刷新。


3.listview如何优化图片?

①不要拿路径去循环BitmapFactory.decodeFile;使用options保存图片大小,不要加载图片到内存中去

②对图片一定要经过边界压缩尤其是比较大的图片,最好后台能将图片处理

③不要直接那个路径去取图片,而是以弱引用代替

④在getView中图片转换时,中间变量一定要释放

异步加载图片:

先从内存缓存中获取图片

获取不到的话从SD卡里面获取

都获取不到就从网络下载,保存到SD加入到内存并显示


4.listview图片错位问题是怎么产生的?

图片错位源于我们使用了converview,假设一种场景,一个listview显示9个item,那么在拉出第9个item时其实是重复使用第一个item,也就是说第一个item从网络下载并要显示的时候,该item已经不再显示区域,此时就有可能在第10个item上显示,这就可能导致图片错位问题,解决办法是能显示就显示不能显示就不显示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值