listview的优化

常用的3种listview的优化:

1、convertView重用
根据convertView来判null,null的时候才去初始化布局
2、利用viewHolder静态类
ViewHolder写为静态类,因为用static定义的静态内部类相对独立,不能访问所在类的方法和实体,占用资源更少。如果去掉static,可以彼此互相访问实体,会浪费一些资源。
3、ViewHolder优化
使用ViewHolder的原因是findViewById方法耗时较大,如果控件个数过多,会严重影响性能,而使用ViewHolder主要是为了可以省去这个时间。通过setTag,getTag直接获取View

以上三种是最常用的三种listview的优化,作为小白时期的我也只能说出三中优化方案;后来经过资料整理得出一下几种更深层次的优化方案:
4、如果listview有图片加载显示
ListView加载显示网络图片,尽量不要在ListView滑动的时候加载图片,那样会使ListView变得卡顿,所以需要在监听器里面监听ListView的状态(setOnScrollListener scrollState),如果ListView滑动 (SCROLL_STATE_TOUCH_SCROLL)或者被猛滑(SCROLL_STATE_FLING)的时候,停止加载图片,如果没有滑动(SCROLL_STATE_IDLE),则开始加载图片。
5、如果item中有需要监听的事件(onClickListener)
当ListView的item中有比如button这些子view时,需要对其设置onclickListener,通常的写法是在getView方法中一个个设置,比如
vh.tv.setonClickListener(new onClickListenr)…但是这种写法每次调用getView时都设置了一个新的onClick事件,效率很低。高效的写法可以直接在ViewHolder中设置一个position,然后viewHolder implements OnClickListenr
6、adapter中的getView方法尽量少做耗时操作
7、adapter中的getView方法避免创建大量对象
8、将ListView的scrollingCache和animateCache设置为false(
这两个属性,默认情况下是开启的,会消耗大量的内存,因此会频繁调用GC,我们可以手动将它关闭掉(视情况而定))

在此感谢一些大神提供的建议。后续有更好的优化会持续记录

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值