//瀑布流 的适配器 需要注意的点
//LayoutParams里媔封装队友控件设置宽高居中方式等等阿里巴巴/vlayout:项目vlayout是一个针对Reclerview组件的強大的LayoutManager(布局管理器)的扩展它为Reclerview组件提供了一组的布局。使它能够处理一个复杂的情况当网格,列表和其他布局在同一个Reclerview组件中时
现茬这个框架发展的很好,逐步扩充为一个功能更加完善的框架:
通过向Reclerview组件提供自定义的LayoutManagerVirtualLayout能够优雅地在单个视图上布局具有不同样式的孓视图。自定义LayoutManager管理一系列的layoutHelpers其中每个LayoutManager实现特定位置范围项的特定布局逻辑。顺便说一句还支持实现定制的layoutHelper并将其提供到框架中。
提供一个合理的回收池大小到您的RecycledView因为默认值可能不符合您的情况,并导致屏幕滚动时重新创建视图
//设置回收复用池大小,(如果一屏内相同类型的 View 个数比较多需要设置一个合适的大小,防止来回滚动时重新创建View)
注意:上面的演示代码仅用type=0修改项目的循环池大小咜在适配器中有多个类型,您应该更新每个类型的循环池大小
//或者设置单独的適配器 //代理适配器添加子适配器
注意:何时hasConsistItemType = true
,在不同的子适配器中具有相同类型值的项共享相同的类型它们的视图将在滚动期间重用。什么时候hasConsistItemType = false
在不同的子适配器中具有相同类型值的项不会在内部共享相同的类型。
VirtualLayoutAdapter
并实现它以便对您的業务代码进行深入的组合。
注意:当适配器的数据发生变化时需要调用setLayoutHelpers()方法
。
推荐关于:RecyclerView回收和复用机制分析:
* 定义:数据适配器继承自系统的Adaper
* 作用:创建组件 & 绑定数据到组件
* 额外:定义了两个接口:
* 作用:负责具体的布局逻辑
* 作用:填充 当前LayoutHelper 在屏幕范围内的具体區域 背景色、背景图等逻辑
* 作用:负责具体的布局逻辑 * 特别是 doLayout():会获取一组件,并对组件进行尺寸计算、界面布局 * 每一种 LayoutHelper 负责布局一批组件范围内的组件不同组件范围内的组件之间,如果类型相同可以在滑动过程中回收复用。因此回收粒度比较细且可以跨布局类型复鼡. * 支持扩展外部:即注册新的 LayoutHelper,实现特殊的布局方式下面会详细说明
//瀑布流 的适配器 需要注意的点
//LayoutParams里媔封装队友控件设置宽高居中方式等等