Android Xamarin TreeView nLevels

我花了很多时间来发现如何在Android Xamarin中实现TreeView,但不幸的是似乎没有任何关于它的例子。

我尝试使用ExpandableListView但它只支持2级类别。 我需要有人可以通过这些内容或某些例子说明这一点。

目的是探索服务器上的文件夹!

非常感谢。

目的是探索服务器上的文件夹!

您可以使用绑定库导入一些Java库,例如AndroidTreeView 。

例如,我从这个项目创建了一个.aar库。 然后代码如下:

protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); //create root TreeNode root = TreeNode.InvokeRoot(); TreeNode parent = new TreeNode("parent"); TreeNode child0 = new TreeNode("ChildNode0"); TreeNode child1 = new TreeNode("ChildNode1"); TreeItem item = new TreeItem() { text = "abc" }; TreeNode child10 = new TreeNode(item).SetViewHolder(new MyHolder(this)); child1.AddChild(child10); parent.AddChildren(child0, child1); root.AddChild(parent); AndroidTreeView atv = new AndroidTreeView(this, root); LinearLayout rootlayout = FindViewById(Resource.Id.rootlayout); rootlayout.AddView(atv.View); rootlayout.Invalidate(); } 

TreeItem的创建方式如下:

 public class TreeItem : Java.Lang.Object { public string text; } 

MyHolder是这样的:

 public class MyHolder : TreeNode.BaseNodeViewHolder { private Context mcontext; public MyHolder(Context context) : base(context) { mcontext = context; } public override View CreateNodeView(TreeNode p0, Java.Lang.Object p1) { var inflater = LayoutInflater.FromContext(mcontext); var view = inflater.Inflate(Resource.Layout.itemview, null, false); TextView tv = view.FindViewById(Resource.Id.itemtv); var item = p1 as TreeItem; tv.Text = item.text; return view; } } 

这是演示 ,你可以在那里找到.aar lib 。