2012-02-18 5 views
0

Я ищу обновить ListView без перезагрузки страницы. Точнее, у меня есть служба, которая отправляет данные для ListView в Activity, однако Activity загружает задолго до того, как Service может получить данные. Поэтому мне нужно иметь возможность загружать/перезагружать ListView после того, как Activity уже загружен.Я ищу обновить ListView без перезагрузки страницы

ответ

1

Звоните notifyDataSetChanged() на номер ListViewAdapter всякий раз, когда вы хотите его обновить.

1

Я обнаружил, что notifyDataSetChanged only works if you use the add, insert, remove, and clear functions on the Adapter, так что я в конечном итоге делает это следующим образом в подобной реализации:

AsyncTask извлекает все данные в doInBackground. Затем, когда закончите, я впервые установил адаптер списка в onPostExecute. Чтобы пользователь знал, что что-то загружается, я просто положил TextView поверх Listview и установил его текст «Загрузка ..» в onPreExecute, а затем сделайте его невидимым в onPostExecute, когда данные будут готовы.

Если вам необходимо обновить данные, вы просто выполните команду AsyncTask.

Мне нравится этот способ, потому что вы только устанавливаете ArrayAdapter один раз (то есть когда у вас есть все данные). Here больше на AsyncTask в случае необходимости. В документах есть хороший код примера.

1

Я бы сказал, чтобы использовать IntentService вместо Service. Используя, используя IntentService, вы сможете отправлять данные на задний план Service, а также получать обновленные данные при запуске BroadCastReceiver для обновления вашего пользовательского интерфейса. Here - это полный пример того, как вы можете достичь своей задачи, используя IntentService.

Смежные вопросы