目录
0.前言:推荐初学者阅读RecyclerView机制
1.复用与回收的关系
滚动屏幕——“先复用,再回收”
1.1复用流程
复用流程:缓存 mCachedViews 取 >
缓存 RecycledViewPool 取 > Adapter.onCreateViewHolder()直接创建新的
1.2回收流程
遍历移除屏幕的 View,从 View的 LayoutParams 中取出 ViewHolder,塞入 2级缓存 mCachedViews
如果 mCachedViews 满了(容量2),则 mCachedViews 移除第一个,用来放要回收的 ViewHolder
如果 RecycledViewPool 对应 viewType 的 List 没满(容量5),则从 mCachedViews 移除的 ViewHolder 放入 RecycledViewPool如果RecycledViewPool满了,将会直接丢弃viewHolder
1.3复用与回收的先后关系
复用的对象是原就在mCachedViews,ReclerViewPool内的,不算马上消失的
而回收对象,是马上消失的item,等到复用完成后,这些item才会加入mCachedViews或ReclerViewPool内
2.刷新机制
标签:RecyclerView,流程,复用,回收,RecycledViewPool,mCachedViews From: https://blog.csdn.net/m0_74837900/article/details/137634548RecyclerView 支持局部刷新
1、notifyItemChanged(int position, Object payload)
payload参数,传入非空Object对象2、onBindViewHolder(RecyclerHolder holder, int position, List payloads)
payloads.size 永远是 1,根据 payload参数值,实现局部刷新