我花了很多时间来探索如何在 Android Xamarin 中实现 TreeView,但不幸的是似乎没有任何例子说明这一点。
我尝试使用可扩展列表视图但它只支持2级类别。我需要有人提供有关此内容的任何指南或一些相关示例。
目的是探索服务器上的文件夹!
非常感谢。
目的是探索服务器上的文件夹!
您可以使用绑定库 https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/导入一些java库,例如Android树视图 https://github.com/bmelnychuk/AndroidTreeView.
例如,我从该项目创建了一个 .aar lib。然后代码如下:
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<LinearLayout>(Resource.Id.rootlayout);
rootlayout.AddView(atv.View);
rootlayout.Invalidate();
}
The TreeItem
是这样创建的:
public class TreeItem : Java.Lang.Object
{
public string text;
}
And 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<TextView>(Resource.Id.itemtv);
var item = p1 as TreeItem;
tv.Text = item.text;
return view;
}
}
这里是demo https://github.com/GraceFeng/XamarinTreeView,你可以找到.aar lib https://github.com/GraceFeng/XamarinTreeView/tree/master/TreeViewLib/Jars there.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)