2017-09-06 1 views
0

Ich verbrachte so viel Zeit für zu entdecken, wie TreeView in Android Xamarin implementieren, aber Pech scheint kein Beispiel dazu sagen.Android Xamarin TreeView nLevels

Ich habe versucht, ExpandableListView zu verwenden, aber es unterstützt nur Ebene 2 Kategorie. Ich brauche jemanden, der durch diesen Inhalt oder irgendein Beispiel dazu einen Leitfaden hat.

Der Zweck ist die Ordner auf dem Server zu erkunden!

Vielen Dank.

Antwort

0

Der Zweck ist die Ordner auf dem Server zu erkunden!

Sie können Binding Library verwenden, um einige Java-Bibliothek zum Beispiel wie AndroidTreeView zu importieren.

Zum Beispiel habe ich eine .aar-Bibliothek aus diesem Projekt erstellt. Und dann Code zum Beispiel wie folgt aus:

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(); 
} 

Die TreeItem wird wie folgt erstellt:

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

und MyHolder ist wie folgt:

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; 
    } 
} 

Hier ist die demo, können Sie feststellen, die .aar lib dort.

+0

Warum können Sie eine gute Antwort so haben! –