RecyclerView解决条目错乱以及图片闪越+三级缓存机制

RecyclerView导致条目错乱的原因:viewHolder的复用,一个复用的ViewHolder他里边的View有些属性已经被修改了,所以新的item在使用服用的viewHolder时,那些被修改的viewHolder里边的属性还依然存在,所以会导致新的item也应用到了原来的viewHolder属性,导致出现错乱

解决recyclerView加载图片闪越问题和图片错乱的问题
图片闪越:在onBindView方法中给图片设置站位图

图片错乱:一种是在onViewRecycle方法中取消加载的图片的异步任务,第二种是在onBindViewHolder方法中给ImageView设置Tag,在设置图片的时候判断Tag如果没有变化才设置图片。

Recycler类的内部成员变量
RecyclerView缓存机制总结:主要是三步
主要靠三个内部类来完成,Recycler,ViewCacheExtension,RecyclerViewPool:
1、首先通过 recycler.getViewForPosition()方法,该方法返回ViewHolder对象,通过源码可以知道,该方法会检查mAttachedScrap和一级缓存列表mCachedViews,如果有则返回ViewHolder进行复用。
2、然后调用ViewCacheExtension.getViewForPositionAndType()方法,注意这个方法是抽象方法,需要开发者进行重写。
3、最后检查RecyclerViewPool是否有ViewHolder。
注意 :上述的三个步骤中,只要有一个返回了ViewHolder,就不会在进行后边的步骤了。

最后:缓存的数量:默认的一级缓存中,mCachedViews中可以缓存的ViewHolder的个数是2;
默认的缓存池中的缓存数量是 5;
所以在缓存时,会先检测一级缓存是否满了,如果没满就add进去,如果满了就加入到三级缓存Recyclerpool
recyclerView的Item局部更新问题: http://www.tuicool.com/articles/euuy2iM
RecyclerView的重用机制: https://my.oschina.net/farina/blog/745927



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值