一个新的 Android TreeView 实现

大家好,在 2022 年初,我想创建一个文件树,正如您在任何代码编辑器或 IDE 中看到的那样,代表项目结构,您可以执行一些操作,例如展开或折叠目录,我已经搜索了许多 Tree View 实现在 GitHub 中,但我发现其中一些多年来没有维护,并且示例项目也没有在新的 Android Studio 版本上运行,其他实现从头开始创建自定义视图并绘制树,但它们无法正常工作大量节点和其他限制。

所以我开始创建一个列表,其中包含所有这些特性的集合,以及 GitHub 问题上要求的一组特性,以便从中获得灵感,这样我就可以创建一个通用且有用的实现,它可以很容易每个人都可以自定义和扩展,因此我想介绍这个新的TreeView库。

主要目标是让TreeView易于使用,几乎不受限制地自定义和扩展,并与新的 android 版本保持同步,那么您可以用TreeView做什么?

TreeView 没有任何自定义视图,你需要的只是一个普通的 RecyclerView,这样你就可以获得 RecyclerView 回收和性能的好处,你也可以在没有任何自定义布局的情况下获得 2D 滚动,就像你想要制作你的普通 RecyclerView有 2D 滚动,

TreeView 有一个自定义的 RecyclerView 适配器,可以使用单击和长单击侦听器,并且

我们将来可以添加更多,因此每个 TreeNode 不需要为它的侦听器提供引用。

您可以拥有任意数量的根,以及任意数量的列表项布局,而无需扩展和覆盖默认适配器,我使用工厂设计模式实现,因此您需要将 TreeViewHolderFactory 传递给映射每个列表的适配器构造函数使用 ViewHolder 进行项目布局,因此您只需为此布局创建一个 View Holder 并将其添加到工厂。

TreeView 还支持很多操作,比如展开和折叠节点和分支,或者按级别展开和折叠所有节点,您还可以获取当前选择的节点和任何节点的父节点,所有这些功能实现都封装在 TreeNodeManager 类中,所以我们可以轻松地为它们编写单元测试,如果您想要不同的实现,您可以轻松地创建自定义 TreeNodeManager 并将其传递给适配器。

有关如何安装、使用和扩展的所有详细信息都写在 TreeView 网站上并附有示例,如果您遇到任何问题或有任何疑问,请随时在Github存储库上创建一个新问题,以便我们快速为您提供帮助。

此实现已准备好使用,如果您有任何想法或要求,请随时分享或贡献并添加它们,您还可以在网站上找到所有详细信息。

TreeView Github:AmrDeveloper/TreeView

树视图网站:Github.io/TreeView

您可以在以下位置找到我:GitHubLinkedInTwitter

a-new-android-treeview-implementation