vlayout的源码分析
在前面说过,使用RecyclerView时,需要绑定一个Adapter和LayoutManager. vlayout并没有改变RecyclerView,而是增加了一些辅助。 它自定义了一个VirtualLayoutAdapter 和 一个VirtualLayoutManager用于绑定到RecyclerView上,并且还定义了一个LayoutHelper提供每个item的布局方式,这一系列的LayoutHelper 则是由VirtualLayoutManager来管理的。
先来看一下vlayout的类图:
(图片转自网络)
VirtualLayoutAdapter
构造方法接收了一个VirtualLayoutManager的实例,并且定义了两个接口:
getLayoutHelpers()——返回某个位置组件对应的一个LayoutHelper.
setLayoutHelpers()——设置整个页面所需的一系列LayoutHelper.
这里可以看出这两个方法的具体实现是委托给VirtualLayoutManager来完成的。
VirtualLayoutManager
VirtualLayoutManager持有一个LayoutHelperFinder对象,当RecyclerView滑动时或者在加载布局的时候,就会调用layoutChunk方法。
可以看到在这个方法中又调用了LayoutHelperFinder中的getLayoutHepler方法,看一下这个方法。
这里使用了折半查找的方式去找到当前所在位置的helper类。
LayoutHelper
La