So aktualisieren Sie SimpleAdapter in Android

8

Ist es möglich, einen SimpleAdapter zu aktualisieren? Ich habe eine Liste von Daten und eine Fußzeile mit der Aufschrift "Nächste Ergebnisse anzeigen". Wenn das Listenelement angeklickt wird, erfasse ich das Ereignis und erhalte neue Daten. Ich möchte dann die Daten in der ListView durch diese neuen Daten ersetzen, aber ich kann nicht herausfinden, wie es geht. Irgendwelche Ideen? Ich möchte keinen ArrayAdapter verwenden, denn soweit ich sehen kann, können die Elemente nur einen String enthalten, wo ich mehrere Strings und Ints speichern muss.

    
Chris L. 22.07.2010, 20:52
quelle

5 Antworten

10

Update : Nach del116 können Sie SimpleAdapter eine veränderbare Map geben und dann manuell die Methode notifyDataSetChanged des Adapters aufrufen, wenn Sie die Liste aktualisieren müssen. Im Folgenden wird jedoch die Dokumentation von SimpleAdapter erläutert, in der angegeben wird, dass es sich um statische Daten handelt. Die Verwendung für veränderliche Daten widerspricht dem Design. Wenn Sie diese Technik verwenden, würde ich sicher sein, dass sie überprüft, ob sie in neuen Android-Versionen weiter funktioniert, sobald sie auftauchen.

(Der ursprüngliche Kommentar folgt:)

Wenn Sie sich die SimpleAdapter-Beschreibung ansehen, heißt es "Ein einfacher Adapter zum Zuordnen statische Daten für in einer XML-Datei definierte Ansichten. " Ich habe den Schwerpunkt hinzugefügt - einfach gesagt, SimpleAdapater ist nicht für die Verwendung mit Daten, die sich ändert; Es verarbeitet nur statische Daten. Wenn Sie keinen ArrayAdapter verwenden können, weil Ihre Daten mehr als ein einzelnes Bit enthalten, Dann müssen Sie entweder Ihren eigenen benutzerdefinierten ListAdapter erstellen oder Ihre Daten in einen DB und Verwenden Sie einen der CursorAdapter s.

Als letzten Ausweg können Sie ein ListView , das von einem SimpleAdapter unterstützt wird, aktualisieren, indem Sie zu jedem Zeitpunkt Ihrer Daten eine ganz neue SimpleAdapter -Instanz erstellen ändert und teilt der Listenansicht mit, dass sie über setListAdapter verwendet werden soll.

    
Walter Mundt 04.08.2010 17:54
quelle
3
%Vor%

Rufen Sie diese Funktion jedes Mal auf, um die ListView zu aktualisieren. Beachten Sie, dass Sie die Liste Variable mit neuen Daten aktualisieren müssen.

Hoffe das hilft ..:)

    
Augustus Francis 23.05.2013 08:24
quelle
2

SimpleAdapter ist für statische Daten vorgesehen, sodass Ihre Leistung variieren kann. Die beste Lösung ist wahrscheinlich, zu einem anderen Adaptertyp zu wechseln, z. B. ArrayAdapter , oder jedes Mal, wenn Sie das Dataset ändern, ein neues SimpleAdapter zu erstellen.

    
Hishighness731 13.10.2012 20:38
quelle
0

Ich konnte notifyDataSetChanged () nicht dazu bringen, meinen SimpleAdapter zu aktualisieren. Stattdessen habe ich zuerst versucht, alle Ansichten zu entfernen, die mit removeAllViews () an das übergeordnete Layout angehängt wurden, und dann die ListView hinzugefügt, und das hat mir erlaubt um die Benutzeroberfläche zu aktualisieren:

%Vor%     
Chasden 22.08.2013 14:52
quelle
-2
%Vor%

Verwenden Sie diese Zeile nach dem Aktualisieren von Daten in der HashMap-Datenliste

    
Ibrahim 21.07.2015 01:03
quelle

Tags und Links