Ist es möglich, einen SimpleAdapter zu aktualisieren? Ich habe eine Liste von Daten und eine Fußzeile mit der Aufschrift "Siehe nächste Ergebnisse". 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 eine Zeichenkette enthalten, die mehrere Strings und Ints enthalten muss.Wie SimpleAdapter in Android zu aktualisieren
Antwort
aktualisieren: Nach del116, können Sie in der Tat SimpleAdapter
eine veränderbare Karte geben und rufen Sie dann manuell die notifyDataSetChanged
Methode des Adapters, 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 ihrem Design. Wenn Sie diese Technik verwenden, würde ich sicher sein, dass sie überprüft, ob sie in neuen Android-Versionen weiterarbeitet, sobald sie auftauchen.
(Original Kommentar folgt :)
Wenn Sie die SimpleAdapter description betrachten es sagt, es ist „Ein einfacher Adapter statische Daten zu Ansichten in einer XML-Datei definiert abzubilden.“ Ich habe die Betonung hinzugefügt - einfach gesagt, SimpleAdapater
ist nicht für die Verwendung mit Daten, die sich ändert; Es verarbeitet nur statische Daten. Wenn Sie nicht verwenden können, weil Ihre Daten mehr als ein einzelnes Bit Text enthalten, müssen Sie entweder Ihre eigene benutzerdefinierte ListAdapter erstellen, oder Ihre Daten in eine DB eingeben und eines der CursorAdapter s verwenden.
Als letztes Mittel, wenn Sie nicht viel Leistung benötigen, können Sie könnte eine ListView
von einem SimpleAdapter
gesichert aktualisieren, indem Sie eine ganz neue SimpleAdapter
Instanz Aufbau jederzeit Ihre Daten ändern und sagen, die Listenansicht, es zu benutzen über setListAdapter
.
SimpleAdapter
ist für statische Daten gedacht, daher kann die Leistung variieren. Die beste Lösung ist wahrscheinlich, bei jedem Wechsel des Datasets zu einem anderen Adaptertyp zu wechseln, z. B. ArrayAdapter
, oder einen neuen SimpleAdapter
zu erstellen.
ListView lv= (ListView) findViewById(R.id.loglist);
ArrayList<Map<String, String>> list = buildData();
String[] from = { "time", "message" };
int[] to = { R.id.logtime, R.id.logmessage };
adapter = new SimpleAdapter(getApplicationContext(), list,R.layout.log_list_row, from,to);
lv.setAdapter(adapter);
Rufen Sie diese Funktion jedes Mal auf, um das ListView zu aktualisieren. Beachten Sie, dass Sie haben die Liste Variable mit neuen Daten zu aktualisieren ..
this helps .. :)
war ich nicht in der Lage zu bekommen notifyDataSetChanged() auf der Aktualisierung meinen SimpleAdapter zu arbeiten, so stattdessen habe ich versucht, zuerst alle Ansichten zu entfernen, die auf das übergeordnete Layout angebracht wurden mit removeAllViews(), dann das Listview-Zugabe, und das funktionierte, so dass ich die Benutzeroberfläche aktualisieren:
LinearLayout results = (LinearLayout)findViewById(R.id.results);
ListView lv = new ListView(this);
ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.directory_row,
new String[] { "name", "dept" }, new int[] { R.id.name, R.id.dept });
for (...) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", name);
map.put("dept", dept);
list.add(map);
}
lv.setAdapter(adapter);
results.removeAllViews();
results.addView(lv);
mySimpleAdapter.notifyDataSetChanged();
verwenden Sie diese Zeile nach der Aktualisierung Daten in den Daten HashMap Liste
Bitte lesen Sie die Dokumentation, nicht möglich auf SimpleAdapter wie oben erwähnt SimpleAdapter nicht für solche Aktionen gedacht. – Manny265
- 1. Android SimpleAdapter ändern Element-Stil
- 2. Verwendung von SimpleAdapter mit Spinner
- 3. Android: Wie man eine Bilddatei von der sd Karte zu HashMap mit simpleadapter setzt?
- 4. Force Android Widget zu aktualisieren
- 5. Ich möchte ein Imageview in SimpleAdapter?
- 6. Wie Android Plattform-Tools in einem kopflosen Linux zu aktualisieren?
- 7. android, wie ListView alle 5 Sekunden aktualisieren
- 8. Android Swipe Aktualisieren Layout nach oben scrollen, um zu aktualisieren
- 9. SQLite in Android Wie Werte aktualisieren
- 10. Wie man Android Listview alle 10 Sekunden aktualisieren?
- 11. Wie Markern auf Karte in Android aktualisieren?
- 12. Wie Android Benachrichtigungen in Echtzeit aktualisieren?
- 13. Besseres Verständnis der ViewBinder des SimpleAdapter
- 14. Wie zu Aktualisieren DbContext
- 15. Wie NSMutableDictionary zu aktualisieren?
- 16. Wie Benachrichtigungsnummer zu aktualisieren
- 17. Wie Canvas zu aktualisieren
- 18. Android Implementierung SwipeListView mit Pull zu aktualisieren
- 19. Gesamte Ansicht in Android aktualisieren?
- 20. Wie Phantomjs zu aktualisieren?
- 21. Aktualisieren ListView, wenn zu Aktivität auf Android
- 22. Swipe Container nie aufhören zu aktualisieren Android
- 23. Wie man Text onClick von Listview, das SimpleAdapter verwendet
- 24. aktualisieren SQLite Tabelle in Android
- 25. ImageVIEW in Widget Android aktualisieren
- 26. Wie PHP-Skript in MVC aktualisieren, ohne Seite zu aktualisieren?
- 27. Android Listview nicht aktualisieren
- 28. Aktualisieren der Registerkarte "Android"
- 29. aktualisieren android Zeitzonendaten
- 30. Android aktualisieren ListView
Ihre Antwort hier ist wirklich irreführend. Nach dem Aktualisieren der Array-Daten und dem Aufruf von notifyDataSetChanged() auf meinem SimpleAdapter konnte ich den simpleAdapter aktualisieren. Sie müssen ArrayAdapter nicht verwenden, um notifyDataSetChanged() aufzurufen. – dell116
@ dell116 Fair genug. Ich habe am Ende meiner Antwort auf diese Möglichkeit hingewiesen, aber ich habe sie aufgrund Ihrer Rückmeldung an die Spitze gebracht, dass sie tatsächlich funktioniert; Ich hatte es nicht getestet. Ich behaupte immer noch, dass das, was so etwas macht, etwas Vorsicht verdient, da die SimpleAdapter-Dokumentation ausdrücklich angibt, dass es sich um statische Daten handelt. –
Wenn ich jetzt zurückschaue ... wow. Ich wusste nichts über Programmierung oder den beabsichtigten Zweck von SimpleAdapter. Wenn Sie ein ListView (oder ein anderes AdapterView) verwenden, das von einer Datenstruktur unterstützt wird, die sich ändert, verwenden Sie SimpleAdapter nicht. Fuß.inMouth (wahr); – dell116