listView的优化

本文介绍了ListView在安卓应用开发中的两种关键优化方法:convertView复用机制,避免每次滚动都重新加载布局;ViewHolder模式,减少findViewById调用次数,提高getView方法效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Adapter:

它在ListView和数据源之间起到桥梁的作用,避免listview和数据源直接接触,而导致因为数据源的复杂性使listview显得臃肿。
  Adapter,适配器,把复杂的数据源适配给listview,很容易联想到适配器模式。

增加优化一:convertView的使用,主要优化加载布局问题

1.listivew每次滚动都会调用gitview()方法,所以优化gitview是重中之重。如果没有缓存就加载布局,如果有缓存就直接用convertView对象。所以这样就不用滑动listview的时候
调用getView()方法每次都去加载布局了(如果改布局已经加载)。

增加优化二:内部类ViewHolder的使用。

主要优化getView方法中每次回调用findviewByID()方法来获取一次控件的代码。
新增加内部类ViewHolder,用于对控件的实力存储进行缓存。convertView为空时,viewHolder会将空间的实力存放在ViewHolder里,然后用setTag方法讲viewHolder对象存储在view里。
convertView不为空时,用getTag方法获取viewHolder对象.

listview的许多view呈现在Ui上,这样的View对我们来说是可见的,可以称为OnScreen的view(也为ActionView)。

view被上滚移除屏幕,这样的view称为offScreenView(也称为ScrapView)。

然后ScrapView会被listview删除,而RecycleView会将这部分保存。

而listview底部需要显示的view会从RecycleBin里面取出一个ScrapView。

将其作为convertView参数传递过去,

从而达到View复用的目的,这样就不必在Adapter的getView方法中执行LayoutInflater.inflate()方法了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值