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 Activity
aber 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 № 1ich habe das gefunden notifyDataSetChanged
funktioniert nur, wenn Sie die add
, insert
, remove
, und clear
Funktionen auf der Adapter
Also 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
.