Android Tree View

Dies ist eine einfache Tree implementation für Android. Auf dieser Seite zeigen wir ein paar einfache Beispiele für die Benutzung des Tree.

Den Tree ins eigene Layout XML integrieren

Um den Baum verwenden zu können muss er zunächst ins eigene Layout integriert werden. Das könnte im einfachsten Fall so aussehen.
	<?xml version="1.0" encoding="utf-8"?>
	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	    android:layout_width="fill_parent"
	    android:layout_height="fill_parent"
	    android:orientation="vertical" 
	    >

	    <de.exware.android.ui.tree.Tree
                android:id="@+id/tree"
		android:layout_width="match_parent"
		android:layout_height="wrap_content" 
	    ></de.exware.android.tree.Tree>
	</LinearLayout>

Den Tree ohne Anpassungen verwenden

Hier zeigen wir, wie der Baum ohne eigene Anpassungen verwendet werden kann. Wie man sehen kann, muss lediglich eine Struktur von TreeObjects erstellt werden, die dann mittels setRoot() zur Anzeige gebracht wird. Der Standard Renderer verwendet die toString() Methode der übergebenen Objekte für die Darstellung der Objekte.
   ITreeObject root = new TreeObject("Root");
   ITreeObject child = new TreeObject("Child 1");
   root.addChild(child);
   child = new TreeObject("Child 2");
   root.addChild(child);
   ITreeObject subchild = new TreeObject("Child 2.1");
   child.addChild(subchild);   
   Tree tree = (Tree) findViewById(R.id.tree);
   tree.setRoot(root);
Das Ergebnis sieht dann wie folgt aus:

Benutzer Interaktion

Mit dem Aufruf von setTreeListener() kann man überwachen, wann ein Anwender auf den Baum geklickt hat.

Eigene TreeObject Klassen

Bei Bedarf können eigene TreeObject Unterklassen verwendet werden. Auch das komplette implementieren des Interface ITreeObject ist machbar, erfordert aber etwas mehr aufwand. Hier zeigen wir eine abgeleitete Klasse, die die toString() Methode ersetzt, um die Darstellung zu verändern (Das gleiche kann auch durch eine eigene Tree Klasse erreicht werden. Siehe unten).
   class MyTreeObject extends TreeObject<Person>
   {
      public MyTreeObject(Person person)
      {
         super(person);
      }

      public String toString()
      {
         return person.getName();
      }
   }

Eigene Tree Klasse verwenden

Um die Darstellung des Baums komplett ändern zu können, kann eine einfache Ableitung der Klasse Tree erstellt werden. Hier ist die Methode getView() zu überschreiben.
    public View getView(View convertView, ITreeObject value)
    {
	DefaultRendererView view = super.getView(convertView, value);
        Person person = (Person)value;
        view.setText(person.getName());
        return view;
    }
Die DefaultRendererView ist auch für das Zeichnen der Handles zum öffnen und schließen des Baums verantwortlich. Wenn die Darstellung komplett angepasst werden soll, dann kann auf den Aufruf von super.getView() verzichtet werden. Dann muss hier eine eigene View erstellt werden.