本文主要通过如下几个方面讲解RecyclerView缓存机制:
ViewHolder是对RecyclerView上的ItemView的封装,它是RecyclerView缓存的载体。它封装了以下属性:
scrap缓存由mAttachedScrap和mChangedScrap两个缓存组成,在RecyclerView调用dispatchLayout时会使用该缓存,保存RecyclerView上的子View。
该接口只提供了get方法,没提供put方法。
dispatchLayoutStep1()、dispatchLayoutStep2()、滑动RecyclerView时会发生复用
预布局过程中从mChangedScrap缓存中获取ViewHolder。获取逻辑如下:
根据viewType从SparseArray中获取相应的ViewHolder,该缓存中获取的ViewHolder需要重新绑定