我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android中RecyclerView实现多级折叠列表效果(TreeRecyclerView)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android中RecyclerView实现多级折叠列表效果(TreeRecyclerView)

前言

首先不得不吐槽一下产品,尼玛为啥要搞这样的功能....搞个两级的不就好了嘛...自带控件,多好。三级,四级,听说还有六级的....这样丧心病狂的设计,后台也不好给数据吧。

先看看效果:

两级的效果:

Android中RecyclerView实现多级折叠列表效果(TreeRecyclerView)

三级的效果:

Android中RecyclerView实现多级折叠列表效果(TreeRecyclerView)

全部展开的效果(我只写了五级)

Android中RecyclerView实现多级折叠列表效果(TreeRecyclerView)

说说为什么写这货吧:

公司产品提出三级这个需求后,我就在网上找啊找.

找的第一个,发现实现其实是ExpandListview嵌套.

找的第二个,ExpandRecyclview,然后就用呗,发现三级展开很卡,看源码,

发现是RecyclerView套RecyclerView

就没有不嵌套的么.....

然后找到hongyang的那个博客,写个试试吧.

说说思路:

      1.Treeadapter应该只需要关心List<TreeAdapterItem> datas 的内容

      2.把每个item看成独立的个体,布局样式,每行所占比,bindViewHolder都由自己的来决定。

      3.每一个item应该只关心自己的数据和自己的下一级的数据,不会去关心上上级,下下级

      4.展开的实现,item把子数据集拿出来,然后添加到List<TreeAdapterItem> datas,变成与自己同级,因为每次展开只会展开一级数据。

      5.折叠递归遍历所有子数据,递归拿到自己所有的子数据集(可以理解因为一个文件夹下所有的文件,包括子文件夹下的所有),然后从List<TreeAdapterItem> datas删除这些数据。

见代码:

public abstract class TreeAdapterItem<D> {  protected D data;  protected List<TreeAdapterItem> childs;  protected boolean isExpand;  protected int layoutId;  protected int spanSize; ···· get/set方法省略。。。。 ···· public TreeAdapterItem(D data) { this.data = data; childs = initChildsList(data); layoutId = initLayoutId(); spanSize = initSpansize(); }  public void onExpand() { isExpand = true; }  public void onCollapse() { isExpand = false; }  public List<TreeAdapterItem> getAllChilds() {  ArrayList<TreeAdapterItem> treeAdapterItems = new ArrayList<>();  for (int i = 0; i < childs.size(); i++) {  TreeAdapterItem treeAdapterItem = childs.get(i);  treeAdapterItems.add(treeAdapterItem);  if (treeAdapterItem.isParent()) {   List list = treeAdapterItem.getAllChilds();   if (list != null && list.size() > 0) {   treeAdapterItems.addAll(list);   }  }  }  return treeAdapterItems; }  public boolean isParent() {  return childs != null && childs.size() > 0; }  public int initSpansize() {  return spanSize; }  protected abstract List<TreeAdapterItem> initChildsList(D data);  protected abstract int initLayoutId();  public abstract void onBindViewHolder(ViewHolder holder);}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android中RecyclerView实现多级折叠列表效果(TreeRecyclerView)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android中RecyclerView实现多级折叠列表效果(TreeRecyclerView)

前言首先不得不吐槽一下产品,尼玛为啥要搞这样的功能....搞个两级的不就好了嘛...自带控件,多好。三级,四级,听说还有六级的....这样丧心病狂的设计,后台也不好给数据吧。先看看效果:两级的效果:三级的效果:全部展开的效果(我只写了五级)
2023-05-31

Android中RecyclerView实现多级折叠列表效果(二)

前言在本文开始之前请大家先看一下这篇文章:https://www.jb51.net/article/113510.htm上面的这篇文章是之前写的,里面发现有很多不好用地方,也学到些新姿势,改动了许多地方。下面来看看详细的介绍:要点:
2023-05-31

iOS实现列表折叠效果

本文实例为大家分享了iOS实现列表折叠效果的具体代码,供大家参考,具体内容如下 实现列表折叠效果其实比较简单,点击列表头部的时候,把返回列表行数设为 0,就是收起列表;再次点击列表头部,显示列表的行数,就展开了列表。#import "Tab
2022-05-26

android项目中如何实现给RecyclerView加上折叠效果

android项目中如何实现给RecyclerView加上折叠效果?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。效果总结一下这个列表的特点,就是以下三点: 1.
2023-05-31

纯css怎样实现多级折叠菜单折叠树效果

这篇文章将为大家详细讲解有关纯css怎样实现多级折叠菜单折叠树效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、运用checkbox的checked值来判断下级栏目是否展开,CSS3的选择器中提供了:
2023-06-08

Android TextView实现多文本折叠、展开效果

背景在开发过程中,当我们的需求中包含说说或者评论等内容的展示时,我们都会考虑当内容太多时该如何显示。当内容的字数太多,如果全部展示出来可能会影响体验效果,但是又不能只截取一部分内容进行展示,此时就需要考虑使用多行显示折叠的效果来实现。效果图
2023-05-31

Android UI实现多行文本折叠展开效果

上文介绍了单行文本水平触摸滑动效果,通过EditText实现TextView单行长文本水平滑动效果。 本文继续介绍了多行文本折叠展开,自定义布局View实现多行文本折叠和展开 1.概述 经常在APP中能看到有引用文章或大段博文的内容,他们的
2022-06-06

Android中怎么利用RecyclerView实现列表嵌套效果

Android中怎么利用RecyclerView实现列表嵌套效果,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. 定义多布局对象的基类:public class Base
2023-05-30

Android中怎么利用RecyclerView实现数据列表展示效果

Android中怎么利用RecyclerView实现数据列表展示效果,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.首先导入依赖: compile com.android.s
2023-05-30

大数据中分组报表怎样实现折叠伸缩效果

这篇文章将为大家详细讲解有关大数据中分组报表怎样实现折叠伸缩效果,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在业务系统中分组统计是比较常见的数据分析形式,但当数据项较多,或分组的层级过多时
2023-06-04

如何在Android应用中实现一个列表悬浮效果

这期内容当中小编将会给大家带来有关如何在Android应用中实现一个列表悬浮效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体方法如下:package com.xiaos.view;import an
2023-05-31

如何在android中利用listview实现一个列表展示效果

今天就跟大家聊聊有关如何在android中利用listview实现一个列表展示效果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.设置条目点击事件package com.ithei
2023-05-31

Android 开发中怎么利用TreeView实现一个多级树形列表

今天就跟大家聊聊有关Android 开发中怎么利用TreeView实现一个多级树形列表,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。具体的实现思路参考下面的项目结构和具体代码:Ele
2023-05-31

Android实现在列表List中显示半透明小窗体效果的控件用法详解

本文实例讲述了Android实现在列表List中显示半透明小窗体效果的控件用法。分享给大家供大家参考,具体如下: Android 在列表List中显示半透明小窗体效果的控件,多的不多直接上代码,要说的都在注释里了:import com.hi
2022-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录