IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> android一个recyclerView实现无限层级多层级列表折叠树 -> 正文阅读

[移动开发]android一个recyclerView实现无限层级多层级列表折叠树

先看下效果

?现在很多文章都是rv嵌套rv ,层级多了肯定会卡。我这个只使用了一个recyclerview,先说下思路。

1,我们先看看多层级的json一般是什么结构的,举个栗子,行政区结构是最常见

?这个可以无限级,如果用rv嵌套你都不知道要嵌套多少个rv,社区后面还可以有街道,道路,小区,楼栋,几层,几号房等等

?这是我项目里面的数据

2,现在我们要考虑的是怎么使用一个rv能实现多层级的列表;我们平时使用rv做列表的时候是不是只有一个同级的数据,那么我们就先实现一个同级的列表。我们的折叠树是一层一层的展开的,我们先实现最外层的列表,实现一层我就不说了

一级是这个样子的,我使用的是项目里面的json数据 ,改了下名字,就没使用行政区

3,在是实现下一步之前还有个小问题,就是怎么解析数据,有的同志不要傻粑粑的把数据复制,alt+s,粘贴,去生成bean了,因为我们是不确定多少级的,你去生成的就是确定了多少级了。

这个每级的key都是一样的

class TreeModel{
?? ?public String name;
?? ?public String id;
?? ?public List<TreeModel>child;
}

我们这样是不是就可以了,解析出来List<TreeModel>mList;

4,点击第一级展开的我们该怎么实现,我们只要把第二级的数据添加到mList后面就行了

如果我们点击第一个是不是就是mList.get(0).getChild();把它添加到mList后面,变成同一级了,这样他们就是同一个列表了。虽然他们是同一级了但是我们要在列表里面看到区别,每级之间要有距离区分。这样我们可以加一个字段int字段,leave来区分,int默认值是0,我们只要在添加子数据之前,循环把子集每个item的leave设置值就行了

然后在adapter里面

?这样第一级是不是距离左边一个fixLeft,第二级距离2个fixLeft的距离

按照这个思路展开是不是很容易实现,我们点击哪个就只有把那个的子集添加到后面就行了

还有就是我们需要添加一个isOpen的字段来标识这个item是否已经展开

5,然后我们说下折叠,折叠就是移除点击这项的所有子view。我们发现现在这个数据结构展开之后我们搞不清他们之间的关系,到底谁是谁子集都搞不清了。这样我们要改变一下数据,让他们都关联起来。我们可以在bean里面加一个字段parentId,就是保存父级的id。这样我们就能把上下级关联起来了

在我项目里面的数据已经存在这个parentId了,如果你的数据里面不存在也没关系。我们自己加上。

这个就要在添加子集的时候把parentId赋值,找到之前那一步

?上下级关联之后,折叠的话只要根据id去匹配删除子集就可以了。

最后还有一个问题就是,展开了多级,因为第一级和第三级、第四级是无法关联的,所以要使用递归去删除

demo资源下载

https://download.csdn.net/download/qq_24543821/49764541

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-27 10:01:16  更:2021-11-27 10:02:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:04:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码