Custom ListView mit ArrayAdaper: Wie bekomme ich einen Refresh hin??

  • Antworten:3
Code Bauer
  • Forum-Beiträge: 16

28.05.2010, 17:42:34 via Website

Hi Entwickler,

seit zwei Tagen bin ich am Probieren, Googeln und Doku wälzen, bisher ohne Erfolg. Dabei möchte ich eigentlich nur den Inhalt einer ListView im laufenden Betrieb ändern und Android (2.1) dazu bewegen die ListView in der GUI zu aktualisieren. Das Einzige was bisher funktioniert ist das Neusetzen des zugehörigen ArrayAdapters. Nach dem was ich bisher so gelesen hab ist das aus Ressourcen und Performance-Sicht nicht unbedingt die beste Lösung.

Folgende Ausgangssituation:

Ich habe eine TabActivity. In einem der Tabs erzeuge ich mittels Intent eine neue ListActivity. Diese wird über einen ArrayAdapter mit Werten befüllt. Hinzuzufügen wäre eventuell noch, dass die Liste nicht im StandardLayout läuft sondern von mir angepasst wurde (jeder Eintrag besitzt ein Icon und mehrere Textfelder).

Die Liste an sich ist relativ statisch, sie enthält immer die selben Einträge. Allerdings können Teile der Texte ersetzt werden (dies erfolgt in einem ClickHandler).

Probiert habe ich zwei Wege: Zum einen das direkte Anpassen der Eintragsobjekte (also ohne dabei auf den Adapter zuzugreifen) und das Entfernen und Neusetzen der jeweiligen Objekte über den Adapter (remove und insert, wobei ich vorher setNotifyChange(true) gesetzt habe).

Das Ende vom Lied: Die Liste wird optisch nicht aktualisiert. NotifyDataSetChanged() funktioniert ebenfalls nicht. Sowohl beim direkten Aufruf im ClickHandler noch bei Aufruf über eine Runnable-Klasse und runOnUiThread. Bisher hilft nur Neusetzen des ArrayAdapters.

1public void issuesUpdated() {
2 runOnUiThread(new updateDoer(this));
3 }
4
5 class updateDoer implements Runnable {
6 SpeechListAdapter _adapter;
7 public updateDoer(SpeechListAdapter adapter){
8 _adapter = adapter;
9 }
10
11 public void run() {
12 _adapter.notifyDataSetChanged();
13 }
14 }


Was mache ich falsch? Wie zwinge ich Android die Liste zu refreshen ohne den kompletten ArrayAdapter neu zuzuweisen??

Antworten
Hans Meier
  • Forum-Beiträge: 12

03.09.2010, 12:47:34 via Website

Das gleiche Problem habe ich auch. Gibt es niemanden der eine Lösung weiß?

Antworten
Johannes Ernst
  • Forum-Beiträge: 13

03.09.2010, 18:41:41 via Website

Könntest über eine reload des jeweiligen Tabs und der dahinterstehenden Activity machen, sprich die Activity wird einfach neugestartet und onCreate neu ausgeführt.

Antworten
Marius O.
  • Forum-Beiträge: 1.588

05.09.2010, 22:05:42 via Website

du musst einfach den adapter neu initialisieren und neu zuweißen ;)

Antworten