Frage zu Darstellung von Daten in ListView und ListActivity

S

searcher73

Neues Mitglied
0
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
 

Ähnliche Themen

A
Antworten
10
Aufrufe
1.021
swa00
swa00
M
  • MikelKatzengreis
Antworten
5
Aufrufe
128
swa00
swa00
S
Antworten
0
Aufrufe
592
Sergio13
S
Zurück
Oben Unten