一個使用RecyclerView寫的樹結構效果:TreeRecyclerView

鏈接地址: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)));
}
}

}
}

發佈了29 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章