107

最快的Android TreeView出现了!

 6 years ago
source link: http://blog.csdn.net/niu_gao/article/details/78985540?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

又又又更新了!

源码地址:https://github.com/niugao/RecyclerListTreeView

版本更新到0.1.8!修正多个bug,增加多项实用功能!

  • 添加从获取节点的相邻哥哥和弟弟的方法:getNextSibling(),getPrevSibling();
  • 添加获取一个node在兄弟中排行的方法:getNodeRank(); 修正插入节点时的bug;
  • 添加了遍历整棵树的方法forEach(),可以代替enumCheckedNodes()方法,从而去除了唯一一处涉及递归操作的地方;
  • 添加了单元测试;

版本更新到0.1.9!增加多项实用功能!

  • 添加获取第最大孩子的方法getFirstChild();
  • 添加获取最小孩子的方法getLastChild();
  • 添加获取第n个孩子的方法getNodeByRank();(名字似乎取的不好)

无缝插入广告:向大家推荐一本Android开发入门书:《Android9编程通俗演义》-清华大学出版社,京东淘宝及各大书店有售。

  • 基于RecyclerView实现。
  • 存储数据的结构并不是Tree,而是一个ArrayList。与所有已知的网上的实现都不一样,大家似乎都跳不出固定思维。 可以比较一下代码量,此实现比其它的少一半都不止。
  • 核心是一个表示Tree的类,但它的本质是一个List。对RecyclerView没有任何改动,对Adapter只有少量封装, 使用者不会产生任何陌生感。也就是说你对RecyclerView能做的,现在依然能做。
  • 以List的形式表式树,带来很多好处:
    1. 大部分情况下,消除了递归。该用递归的地方基本都变成了循环
    1. 节点有序,插入节点时,可以指定它是它爸爸的第几个儿子。
    1. 极其适合在RecyclerView中使用:与List无异,无论根节点还是子节点都对应RecyclerView中的一行,不需对RecyclerView做任何改动 。

远看像棵树
近看不是树
似树而非树
是为牛逼树

在Gradle中添加依赖:

implementation ‘com.edu:recyclerlisttreeview:0.1.8’

定义Adapter:

见示例程序。

构建Tree集合:

见示例程序。

使用Adapter:

见示例程序。

[外链图片转存失败(img-vKLKasvK-1564788158020)(https://github.com/niugao/RecyclerListTreeView/raw/master/snapshots/1.png)]
这里写图片描述

这里写图片描述
这里写图片描述

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK