1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Frage zu Darstellung von Daten in ListView und ListActivity

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von searcher73, 16.07.2012.

  1. searcher73, 16.07.2012 #1
    searcher73

    searcher73 Threadstarter Neuer Benutzer

    Beiträge:
    1
    Erhaltene Danke:
    0
    Registriert seit:
    30.04.2011
    Hallo,
    ich habe ein Problem bei der Darstellung von Daten aus einer Arraylist in einem eigenen ArrayAdapter und einer ListView.

    Meine App soll folgende Funktion beinhalten:
    Ich habe eine JSON-Baumstruktur. Durch diese Baumstruktur möchte ich mich mittels einer ListView bewegen
    Die JSON-Objekte, die unter einem Eintrag gespeichert sind liegen immer jeweils in einer ArrayList. Diese wird quasi immer neu über einen Aufruf einer Webadresse zusammengebaut.
    Den Namen eines JSON-Objektes zeige ich dann über meinen eigenen ArrayAdapter an.

    Wenn ich ein Element auswähle, möchte ich in meiner Listview die neuen Daten anzeigen, die unter meinem gewählten Eintrag dargestellt werden.
    Weiterhin möchte ich mich im Baum wieder zurück bewegen können.
    Dazu habe ich einen Button. Beim Click auf den Button soll im Baum wieder eine Ebene nach oben gegangen werden und die Daten in der Liste aktualisiert werden. (Die Activity bleibt die selbe)

    Meinen eigenen ArrayAdapter habe erstellt.
    In der onCreate-Methode meiner Activity habe ich Folgendes programmiert:

    // neue Array Liste anlegen, die die JSON-Objekte enthält
    ArrayList<JSONObject> mylist = new ArrayList<JSONObject>();
    // meinen eigenen Adapter instanziieren
    JSONArrayAdapter adapter = new JSONArrayAdapter(this, mylist);
    ...
    // Liste füllen und darstellen
    JSONfunctions.fillArrayList(json, null, mylist );
    setListAdapter(adapter);

    Das Anzeigen funktioniert auch

    Nun meine beiden Probleme.
    Bei der Auswahl eines Listeneintrages (über onClickItemList)
    möchte ich nun die Objekte anzeigen, die unter dem gewählten Objekt liegen.

    Hier habe ich wieder ähnlichen Einträge eingetragen wie in der onCreate-Methode:
    ArrayList<JSONObject> mylist = new ArrayList<JSONObject>();
    JSONfunctions.fillArrayList( json, parentjson, mylist);
    JSONArrayAdapter adapter = new JSONArrayAdapter(this, mylist);
    setListAdapter(adapter);

    auch das funktioniert, allerdings muss ich einen neuen Adapter instanziieren,
    hier hoffe ich, dass das Anders geht.

    Für den Button geht das so nicht, da ich this nicht beim Anlegen des ArrayAdapters verwenden kann. ("this" wird von Eclipse rot markiert)

    Meine Frage:
    Wie muss ich den ArrayAdapter handhaben, wenn ich die Daten in meiner Listview aktualisieren möchte z.B. beim Druck auf einen Button.
    Hierzue lege ich in der onCreate-Methode einen Button an und überschreibe die onClick-Methode. Allerdings kann ich dort keinen Adpter neu anlegen, so wie ich das in der Funktion onClickItemList() mache.

    Muss ich jedesmal ein neuer Adapter angelegt werden?

    Es gibt ja auch die Möglichkeit, über
    adapter.notifyDataSetChanged();
    dem Adapter mitzuteilen, das neue Daten da sind.
    Aber wie habe ich in einer onClick-Funktion Zugriff auf den Adapter?

    Dieser wird doch in der onCreate-Methode angelegt und ist auch nur dort gültig oder?


    Vielen Dank für Eure Hilfe
     

Diese Seite empfehlen