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.
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.
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 ..:)
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.
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%Tags und Links android listview listadapter