
Adapter 的使用 3
BaseNodeAdapter
说明: 继承自BaseProviderMultiAdapter,这是一个类似节点树功能的Adapter,具有展开\收起节点的功能。可以实现更自由的Section功能,或者树形结构,每个item都可以有自己的Footer
此Adapter中的数据类型T固定为BaseNode类,你的数据需要使用BaseNode进行包装。
如果某一个节点需要脚部,则此节点还需要实现NodeFooterImp接口。
1、Adapter代码如下:
2、Provider写法和BaseProviderMultiAdapter中的相同,只是继承类改为BaseNodeProvider,其他没有区别:
3、设置数据
注意,数据需要遵循树形结构,简单来说就是:套娃形式。
下面给出一组示例:
先定义几个节点类,继承于BaseNode,用于封装数据:
模拟生成数据:
它的结构如下:
4、脚部Node
如果此Node需要脚部,那么此Node实现NodeFooterImp接口。
每一个 node 都可以有自己的脚部
示例如下:
5、折叠展开
如果此Node需要折叠展开功能,请继承BaseExpandNode。
示例如下:
Node 默认折叠\展开状态
折叠\展开Node
查找父节点
指定的父Node添加\删除\替换子node
Diff
Diff现在使用更加简单方便快速了。
1、快速使用
实现 DiffUtil.ItemCallback
代码如下:
Adapter 设置 DiffUtil.ItemCallback
代码如下:
Diff 变化数据
2、自定义 Diff 配置(可选)
自定义配置不使用setDiffCallback()方法!
首先还是需要实现DiffUtil.ItemCallback.
目前提供自定义线程
