一个使用RecyclerView写的树结构效果:TreeRecyclerView

原文地址:
http://blog.csdn.net/qq_35920289/article/details/71537653

链接地址:https://github.com/TellH/RecyclerTreeView

       在多层目录ABSListView中,RecyclerTreeView可以说是用起来最简单的了。
现在很多家伙在应用第三方框架的时候,会遇到很多麻烦,例如:如何将第三方库引入到Eclipse项目中,或者如何将RecyclerTreeView-lib导入到AndroidStudio中,或者当你成功导入之后发现会出现一些冲突(jar包重复),当然如果你非要导包,你可以这样做:
这里写图片描述

但是这样的话,就少了一些灵活性,尤其LayoutItemType.java这个类,因为他实现不了多套布局,或者其他的。(当然也可能完全不需要其他我所说到的东西)

所以要我说为了方便直接将RecyclerTreeView-lib中的四个核心类copy过来最直接,而且也不用考虑什么包冲突的,而且还具有一定的拓展性。
这里写图片描述
File类:这个可以看做是你从服务器获取数据后封装的子类

public class File{
public String name;
public int length;
}

Dir类: 这个可以看做是你从服务器获取数据后封装的父类

public class Dir{
public String name;
public int fileSize;
}

public class ChildNode implements LayoutItemType {
public String fileName;
public File file;
public ChildNode(String fileName) {
    this.fileName = fileName;
}

public ChildNode(File file) {
    this.file = file;
    this.fileName = file.name;
}

@Override
public int getLayoutId() {
    return R.layout.child_item;
}}

public class ParentNode implements LayoutItemType {
public String name;
public Dir dir;

public ParentNode(String name) {
    this.name = name;
}

public ParentNode(Dir dir) {
    this.dir = dir;
    this.name = dir.name;
}

@Override
public int getLayoutId() {
    return R.layout.parent_item;
}

}

FileNodeBinder和DirNodeBinder直接根据链接地址查找吧!
算了我还是切割图吧!


20170510152627199.png

解析Json数据的什么的就不用我来讲解了吧!
不知道你的数据结构是几级目录
N级目录:
List originNodes = new ArrayList();
第一级目录:
将你解析出来的Dir对象加载进去(对象 dir)
for(){
TreeNode oneNode = new TreeNode(new ParentTab(dir));
originNodes.add(oneNode);
for(){
第二节目录:
TreeNode twoNode = new TreeNode(new ParentTab(dir));
oneNode.addChild(two);
for(){
。。。。
第N级目录:
TreeNode nNode = new TreeNode(new ParentTab(dir));
(n-1)Node.addChild(nNode);
for(){
文件: 将你解析出来的file对象加载进去(对象 file)
nNode.addChild(new TreeNode(new ChildNode(file)));
}
}

}
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,810评论 19 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,853评论 0 17
  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 13,473评论 3 53
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 4,871评论 1 0
  • 据天气预报今年的梅雨季节会持续到七月份,每天雨里来雨里去,既不能干干爽爽,也没有泡在水里的通透,跟随着心情也是黏黏...
    花如许阅读 1,877评论 0 2

友情链接更多精彩内容