链接地址: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直接根据链接地址查找吧!
算了我还是切割图吧!
解析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)));
}
}
}
}