ListView有多种Item时convertView的复用机制之我见

本文详细解释了convertView的复用机制,特别是在ListView中处理不同类型的Item时如何避免复用错误。通过getItemViewType方法判断View类型,确保复用正确。

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

convertView的复用机制

       通俗理解:假如一个屏幕最多显示7个Item,当Item1被滑出屏幕,此时Item1 的View会被添加进Recycler(反复循环器)中,相应的在下部就会产生一个Item8,这时调用getView方法,convertView参数就是Item1 的View,也就是说,此时的convertView就是Item1 的复制版(副本)。

       那么,此时就会有一个疑问,当ListView具有多种类型的Item时,岂不是就会复用错误?(如:Item1和Item8不是同一种类型,此时Item8复用Item1就错了)

ListView有多种Item时convertView的复用机制

       系统在判断convertView是否为NULL时,会先去调用getItemViewType (int position) ,并且查看Recycler(反复循环器)中是否已经有缓存该类型的View(Recycler缓存的View中是否有与当前即将要显示的View是同一种类型)

     所以,在上面例子中,当调用getItemViewType时,已经知道了此时的Item8和Item1不是同一种类型,所以,Item8是不会去复用Item1的,在判断convertView时,convertView还是等于NULL。

       以上是我个人的理解,如有不正确的地方,请大家帮忙指正,谢谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值