Git地址:
最终实现效果:
1、底层数据结构是用List存储的树形结构,显示层是依据Adapter的ViewType实现的,并不是RecyclerView嵌套实现,所以不会有内存损耗的问题
2、数据层和显示层做了初步分离,所以应该可以以较小代价移植到ListView
3、可以动态添加Item,删除Item(递归删除和单个Item删除)
4、可以设置某节点是否显示
5、最终效果GIF图
大致实现原理:
1、数据层是以树为基本的数据结构来进行后续处理的
(1)、基本节点数据结构
public class ExtendedNode<T> {
//当前节点的数据
public T data;
//当前节点的父节点
ExtendedNode parent;
//该节点所处的层次,从0开始
int layerLevel;
//叶子节点
private ArrayList<ExtendedNode> sons = new ArrayList<>();
//该节点是否处于展开状态
public boolean isExtended;
....
}
(2)、原始数据输入:原始数据是以树形结构进行输入的。
(3)、Adapter内数据存储:将树形结构数据以前序遍历的方式存储在一个List集合内。
/*
* 转换数据,前序遍历,并给每个节点添加层次数据
*
* @