第一次接触树形ListView是一年前,当时公司做的项目是一个企业的员工管理软件,在展示员工时用到的,我花了大半天时间,才把树形ListView搞明白,完成任务后就没有然后了(当时主管还对我说要注意代码的积累,可我没在意)。今年五月份来北京找工作,找了两个月才找到工作(对这份工作还不能满意,没办法还得要吃饭),这两个月,浮躁的心也静下来了,做技术的就踏踏实实的把技术搞好,再去想其他的。废话不多说了说下这个树形ListView吧,做了些封装,只要明白原理,用的时候只需根据自己的需求修改些地方就可以了。
我封装的这个树形ListView针对数据是有从属关系的数据。
针对数据,
第一步:将数据通过反射和注解转化为想要的数据
第二步:理清数据关系(简单说,就是找出谁是谁的爹,谁是谁的儿)
第三步:将数据排序(要知道ListView是将数据源里的数据挨个展现出来的,所以顺序很重要)
这是针对数据的操作
怎么将树形层级展示出来呢?通过View 的位置的后移做到的,层级越高,放的距离越远离屏幕左方(一个固定距离*层级数)
如何实现展开和缩放(展开一些子节点就会展示出来,收缩一些数据就会隐藏)
通过两个数据源,一个数据源为显示的数据源,另一个为全部数据源,根据结点状态过滤出显示数据源。
上面这些就是树形ListView的大体思想
首先介绍下代码结构
MainActivity,SimpleTreeAdapter,FileNode只是些使用时的一些类,
Node,TreeHelper,TreeListViewAdapter等这些是我们封装的
首先说下Node,Node的类是我们封装的数据源,我们要将数据转化为Node类
int id;
int pid = 0;
/**
*名称
*/
String label;
/**
* 层级
*/
int level;
/**
* 当前是否展开
*/
p