Android多级列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android多级列表相关的知识,希望对你有一定的参考价值。

参考技术A 将课本的章节以多级列表的形式显示。

1.嵌套多级 RecyclerView,两级列表还好说,每多一级都是一场噩梦。
2.ExpandableListView?但是ExpandableListView只支持两级,不满足需求。
3.一个RecyclerView或者 ListView 来实现,每一级节点的要素有:当前节点id、父级节点id即pid,显示的内容。

控制父子之间联动的选中与取消状态,只需调用setChecked方法既可,注意如果在setOnCheckedChangeListener中处理会有问题:因为如果要子节点/父节点选中或者取消需要刷新页面,而刷新页面又会触发viewHolder.cb.setChecked(true/false);的判断从而又会进入setOnCheckedChangeListener,会导致如果父节点选中某些子节点取消不了的情况。

通过一个ListView来展示所有数据,每一级内容的显示根据当前展示数据的等级缩进一定的padding值,让我们看起来有缩进效果。

使用过程中感觉不是很舒服的地方在于最终用于显示在界面实体Bean并不是我们传进去的数据,而是经过转化并且过滤的数据,这样最直接的影响就是在我新增数据的数据之后,拿着Adapter来刷新的时候,并没有任何效果。因为我们没有将后面新加的数据进行转化。

而我们如何能在不改变原有数据结构的基础上,添加我们的新内容,并保持原有的选中或者展开正常呢?我的想法是这样的,如果可以直接给它传入转化后的Node节点类型数据就好了,我想到了继承,让实体类去继承基类Node,但一旦继承Node则意味着实体类就不能再继承其他类了,感觉不是很灵活,而且也影响了实体类本身的结构。后来想到了包装设计模式的一些东西,那我就在实体类外再包上一层,也就是将实体类传给Node,最终我们使用的还是Node,但也可以用node.bean很轻松的取出实体类做其他操作,并且实体类本身的结构并没有被破坏。

在此基础上,因为我们的Node不需要转化重新创建,那么它就可以保存一些状态比如展开、选中等等,而在新加入数据时只需标记下新加入的数据,只需对新加入的数据进行初始化状态,已有老数据不进行状态改变:

项目地址: https://github.com/zhangke3016/MultilevelTreeList
原文连接: https://www.jianshu.com/p/090904d2b689

word多级列表怎么设置

    1

    打开Word2010文档页面,在“段落”中单击“多级列表”按钮。

    2

    我们在列表中选择一种符合实际需要的多级列表编号格式。

    3

    在第一个编号后面输入内容,按回车键自动生成第二个编号(注意不是第二级编号),接着输入内容。完成所有内容的输入后,选中需要更改级别的段落,并再次单击“多级列表”按钮。

    4

    在菜单中选择“更改列表级别”选项,并在下一级菜单中选择需要设置的列表级别。

    5

    在文档页面中,我们可以看到刚才创建的多级列表编号。

    END

    方法二

    打开Word2010文档页面,在“段落”中单击“编号”下三角按钮。

    接着我们在列表中选择一种符合我们需要的编号。

    然后在第一个编号后面输入内容,按下回车键自动生成第二个编号。这时我们不着急输入内容,而是按下Tab键将自动开始下一级列表编号。

    4

    第二级列表的格式也可以在“编号”列表中进行设置,完成输入内容后连续按下两次回车键,这样就可以返回上一级列表了。

参考技术A 1
1.1
1.1.1
正文中为了区分文章级别而定义的,这种类型的标题级别编号就是多级列表。
定义多级列表后,标题级别的编号是自动生成的。

以上是关于Android多级列表的主要内容,如果未能解决你的问题,请参考以下文章

像 Google fit 一样的 Android 多级可扩展视图。

ExpandableListView的使用多级列表

Android:如何构建多级选项卡

Android - 使用 ViewPager 和 FragmentStatePagerAdapter 为 ActionBar 创建多级选项卡

Android 实现自己定义多级树控件和全选与反选的效果

多级用户登录 - Android Studio / Firebase