/ / Ich suche, ein ListView zu aktualisieren, ohne die Seite neu zu laden - android-layout, android-intent, android-widget

Ich suche, um eine ListView zu aktualisieren, ohne die Seite neu zu laden - Android, Android-Layout, Android-Absicht, Android-Widget

Ich freue mich auf ein neues ListView ohne die Seite neu zu laden. Genauer gesagt habe ich einen Dienst, der Daten für eine sendet ListView in einem (n Activityaber die Activity lädt lange vor dem Service kann die Daten bekommen. Also muss ich in der Lage sein, das zu laden / neu zu laden ListView nach dem Activity ist schon geladen.

Antworten:

1 für die Antwort № 1

ich habe das gefunden notifyDataSetChanged funktioniert nur, wenn Sie die add, insert, remove, und clear Funktionen auf der AdapterAlso habe ich es in einer ähnlichen Implementierung folgendermaßen gemacht:

Ein AsyncTask ruft alle Daten ab doInBackground. Wenn ich fertig bin, stelle ich den Listenadapter zum ersten Mal ein onPostExecute. Um den Benutzer wissen zu lassen, dass etwas geladen wird, lege ich einfach ein TextView oben auf Listview und setze seinen Text auf "Loading .." in onPreExecute und dann mach es unsichtbar in onPostExecute wenn die Daten bereit sind.

Wenn Sie die Daten aktualisieren müssen, führen Sie einfach die AsyncTask nochmal.

Ich mag diesen Weg, weil Sie nur die ArrayAdapter einmal (d. h. wenn Sie endlich alle Daten haben). Hier ist mehr auf AsyncTask, falls Sie es brauchen. Die Dokumente haben einen schönen Beispielcode.


1 für die Antwort № 2

Anruf notifyDataSetChanged() auf der ListView"s Adapter wann immer Sie es auffrischen wollen.


1 für die Antwort № 3

Ich würde sagen zu benutzen IntentService Anstatt von Service. Durch die Nutzung IntentService Sie können Daten an den Hintergrund senden Service und erhalten auch die aktualisierten Daten beim Abfeuern eines BroadCastReceiver um deine UI zu aktualisieren. Hier ist ein komplettes Beispiel, wie Sie Ihre Aufgabe mit einem IntentService.