TreeView

介绍:

利用RecyclerView打造的树形控件。

运行效果:

使用说明:

1.build.gradle:

compile 'me.texy.treeview:treeview_lib:1.0.3'

2.实现所有层级的BaseNodeViewBinder

Sample:

public class FirstLevelNodeViewBinder extends BaseNodeViewBinder {
  TextView textView;
  public FirstLevelNodeViewBinder(View itemView) { 
    super(itemView);  
    textView = (TextView) itemView.findViewById(R.id.node_name_view)
  }
  @Override
  public int getLayoutId() {
    return R.layout.item_first_level;
  }
  @Override
  public void bindView(TreeNode treeNode) {
    textView.setText(treeNode.getValue().toString());
  }
}
SecondLevelNodeViewBinder
ThirdLevelNodeViewBinder
.
.
.

如果想添加可选功能,把BaseNodeViewBinder替换成CheckableNodeViewBinder。

3.实现 BaseNodeViewFactory

Sample:

public class MyNodeViewFactory extends BaseNodeViewFactory {
  @Override
  public BaseNodeViewBinder getNodeViewBinder(View view, int level) {
    switch (level) {
      case 0:
        return new FirstLevelNodeViewBinder(view);
      case 1:
        return new SecondLevelNodeViewBinder(view);
      case 2:
        return new ThirdLevelNodeViewBinder(view);
      default:
        return null;
    }
  }
}

如果不想创建class,可以在TreeView中实现一个匿名内部类。

4.添加 TreeView

Sample:

TreeNode root = TreeNode.root();
//build the tree as you want
for (int i = 0; i < 5; i++) {
  TreeNode treeNode = new TreeNode(new String("Child " + "No." + i));
  treeNode.setLevel(0);
  root.addChild(treeNode);
}
View treeView = new TreeView(root, context, new MyNodeViewFactory()).getView();
//add to view group where you want
已下载
0