ListView leeren zwecks Aktualisierung

  • Antworten:3
Frank Rudolf
  • Forum-Beiträge: 215

07.12.2015, 12:33:07 via Website

Hallo Leute,

diesmal möchte ich Euch vor meinen InternetRecherchen fragen.

Wie kann ich ein mit Einträgen gefülltes ListView wieder "leeren"?

Wohl nicht wirklich wichtig für diese Frage, aber vielleicht möchte jemand den Hintergrund wissen:
Mein ListView zeigt hierarchisch (wie zB im WindowsExplorer) strukturierte Daten an. Angenommen, ich würde geographische Informationen speichern, so sähe man bei mir im ListView nach dem Programmstart die fünf Erdteile. Bei Klick auf Europa soll sich die ListView neu aktualisieren und die Länder Europas anzeigen. Per Klick auf Deutschland soll man dann die Bundesländer Deutschlands sehen und so weiter.

Zur Zeit sieht es bei mir so aus, dass zwar die Daten im ListView nach dem Klick angezeigt werden, wenn ich nach oben oder unten aus dem sichtbaren ListViewBereich scrolle. Die alten Einträge sehe ich aber natürlich auch noch. Und das soll nicht sein.

Komischer Nebeneffekt, der sich aber wohl bei ordentlicher Programmierung automatisch lösen dürfte, ist, dass ich einen Fehler auslöse, wenn ich im Emulator an das Ende der Liste wische (quasi beim vollen Anzeigen des letzten Listenelements).
Ergänzung: Dieser Fehler steht am Beginn: "ArrayAdapter requires the resource ID to be a TextView". Leichter Verdacht: dies löst ein nicht angezeigter Eintrag aus.

— geändert am 07.12.2015, 12:50:45

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

07.12.2015, 15:33:52 via App

Einfach das Array im Adapter leeren oder das objekt dass du übergibst. dann noch adapter.notifyOnDataChanged() aufrufen damit es funktioniert.

LG Pascal //It's not a bug, it's a feature. :) ;)

Frank Rudolf

Antworten
Frank Rudolf
  • Forum-Beiträge: 215

07.12.2015, 15:57:41 via Website

Ja, aber das geht wohl nicht mit einem einfachen Feld. Daher habe ich mich dazu entschieden, das Ganze mit einer ArrayList umzubauen.

Antworten
Frank Rudolf
  • Forum-Beiträge: 215

07.12.2015, 16:33:31 via Website

Es scheint jetzt zu gehen mit:

adapter.clear(); adapter.notifyDataSetChanged();

Vorher habe ich das Feld in eine ArrayList verwandelt.

Möchte den Thread aber erst mal nicht schließen, da ich noch ein paar Features im Zusammenhang mit dem ListView einbauen möchte.

Antworten