Я ищу, чтобы обновить ListView без перезагрузки страницы - PullRequest
0 голосов
/ 18 февраля 2012

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

Ответы [ 3 ]

1 голос
/ 18 февраля 2012

Я обнаружил, что notifyDataSetChanged работает, только если вы используете функции add, insert, remove и clear на Adapter, поэтому я закончил этимследующим образом в аналогичной реализации:

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

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

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

1 голос
/ 18 февраля 2012

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

1 голос
/ 18 февраля 2012

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

...