| |
|
开发:
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{ 我们这样是不是就可以了,解析出来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资源下载 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |