RecyclerView作为Android开发中最常用的View之一。很多App的feed流都是使用RecyclerView来实现的。加深对于RecyclerView的掌握对于开发效率和开发质量都有很重要的意义。接下来我打算从源码
角度剖析RecyclerView的实现,加深对于RecycledView的了解。RecyclerView的源码实现还是很庞大的。本文就先来看一下RecyclerView的整体设计,了解其核心实现类的作用以及大致实现原理。
下面这张图是我截取的RecyclerView的Structure:
类的组成.png
本文着重看: ViewHolder、Adapter、AdapterDataObservable、RecyclerViewDataObserver、LayoutManager、、Recycler、RecyclerPool。 从而理解RecycledView的大致实现原理。
先用一张图大致描述他们之间的关系,这张图是adapter.notifyXX()时RecyclerView的执行逻辑涉及到的一些类:
RecyclerView组成类之间的关系.png
ViewHolder
对于Adapter来说,一个ViewHolder就对应一个data。它也是Recycler缓存池的基本单元。
class ViewHolder {
public final View itemView;
int mPosition = NO_POSITION;
int mItemViewType = INVALID_TYPE;
int mFlags;
…
}
上面我列出了ViewHolder最重要的4个属性:
itemView