Я обнаружил, что notifyDataSetChanged
работает, только если вы используете функции add
, insert
, remove
и clear
на Adapter
, поэтому я закончил этимследующим образом в аналогичной реализации:
An AsyncTask
извлекает все данные в doInBackground
.Затем, когда закончил, я впервые установил адаптер списка в onPostExecute
.Чтобы дать пользователю знать, что что-то загружается, я просто помещаю TextView
поверх Listview
и устанавливаю его текст "Загрузка .." в onPreExecute
, а затем делаю его невидимым в onPostExecute
, когда данныеготов.
Если вам нужно обновить данные, просто выполните AsyncTask
снова.
Мне нравится этот способ, потому что вы устанавливаете ArrayAdapter
только один раз (т.е. когда вынаконец-то есть все данные). Здесь больше для AsyncTask, если вам это нужно.В документах есть хороший пример кода.