Java Micro: List

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Die Klasse "List" macht es den Programmierern einfach, eine Auswahl aus verschiedenen Elementen zu implementieren. Hier unterscheiden wir zwischen den drei Arten der Liste. Zum einen gibt es die Choice.EXCLUSIVE-Variante. Hierbei ist es den Nutzerinnen möglich, ein Element aus einer beliebigen Anzahl an Elementen auszuwählen. Den gleichen Auswahlmodus bietet auch die Choice.IMPLICIT-Liste. Diese Beiden unterscheiden sich im Aussehen auf dem Bildschirm, aber auch in ihrem Verhalten. So wird die implizite Liste meist für Menüs verwendet, wobei die exklusive Liste eher zur Markierung einer Auswahl genutzt wird. Eine weitere Art der Liste ist Choice.MULTIPLE. Bei dieser Liste können beliebig viele Elemente ausgewählt werden.

Die verschiedenen Listentypen in J2ME

Listen werden wie folgt erstellt:

liste1 = new List("bitte Auswählen!",Choice.EXCLUSIVE);

Diese Zeile zeigt, wie man eine einfache exklusive Liste erstellt. Nun können mit Hilfe der Methode append() Elemente hinzugefügt werden.

liste1.append("Berlin",null);
liste1.append("Hamburg",null);
liste1.insert(1,"Rostock",null);

Mit der Funktion insert() können nachträglich Elemente zu einer Liste hinzugefügt werden. In diesem Beispiel läge Rostock nun zwischen Berlin und Hamburg.

Eine andere Möglichkeit, eine Liste zu erstellen, ist folgende.

String staedte[] = {"Berlin", "Rostock", "Hamburg"};
Liste2 = new List("bitte Auswählen!",Choice.EXCLUSIVE,staedte,null);

So könnte die gleiche Liste wie oben auf andere Art und Weise erschaffen werden. Um Elemente aus einer Liste zu löschen, helfen die Methoden delete(int Index) bzw. deleteAll(), um alle Elemente zu löschen. Der Effekt wird sofort hervorgerufen, auch wenn die Liste gerade angezeigt wird.

Um herauszubekommen, welches bzw. welche Elemente markiert oder ausgewählt wurden, gibt es verschiedene Funktionen. Für die Überprüfung der Auswahl in einer impliziten oder exklusiven Liste wird die Funktion int getSelectedIndex() verwendet. Diese gibt den Index (Position) des Elements zurück, welches gewählt wurde. In einer multiplen Liste sollte die Funktion int getSelectedFlags(boolean[] selectedArray_return) , welche ein Array mit allen ausgewählten Elementen zurückgibt, genutzt werden. Zusätzlich gibt es noch die Methode boolean isSelected(int elementNum), mit deren Hilfe einzelne Elemente auf ihre Auswahl geprüft werden können.

Hier ein Beispiel zur Implementierung einer IMPLICIT-Liste.

    List menu = new List("Menu", List.IMPLICIT, null, null);  //erstellt eine Liste ohne Inhalt
    menu.append("Start",null);  //hängt ein Element in die Liste
    menu.append("Exit",null);  //hängt ein weiteres Element an
    menu.setCommandListener(this);  //setzt CommandListener auf "dieses" Objekt '(this)'

Und hier ein Beispiel für einen möglichen CommandListener:

   public void commandAction(Command c, Displayable d) {
       if(d==menu) {  // wenn das momentane Displayable menu ist
           if(menu.getSelectedIndex()==0) {  // wenn das ausgewählte Element an Stelle 0 ist
               Display.getDisplay(this).setCurrent(this.start);  //Setzt ein neues Displayable, in diesem Fall die Methode start
           }
           if(menu.getSelectedIndex()==1) {  // wenn das ausgewählte Element an Stelle 1 ist
               Display.getDisplay(this).setCurrent(this.destroyApp(true)));  //Programm beenden
           }
   }