Прежде всего, я осмотрел сайт и не смог найти решение своего вопроса, кроме как «скрыть ListView». Это не жизнеспособное решение в моем случае!
Итак, проблема:
Я создал свой «EndlessAdapter», который позволяет мне заполнять ArrayList <>, поддерживающий ListView, большим количеством данных, когда пользователь прокручивает список до конца. Это все работает отлично, за исключением случаев, когда пользователь выбирает строку, пока обновляется список, или меняет ориентацию во время обновления списка (я полагаю, это может быть любое взаимодействие с пользовательским интерфейсом).
Я завернул свой метод mAdapter.notifyDatasetChanged () в попытку перехвата, но я никогда не могу перехватить это IllegalStateException, поэтому я не знаю, где это происходит!
Есть ли способ, пока адаптер обновляет ListView, чтобы я мог заблокировать взаимодействие пользователя с приложением до его завершения? Длинная часть процесса EndlessAdapter - загрузка новых данных. Обновление ListView - быстрый процесс imo.
Мне действительно нужно разобраться в этом вопросе. Лучше не размещать исходный код, но если нужно, я могу попробовать опубликовать жизненно важные данные? В противном случае я был бы очень признателен, если бы кто-то, имеющий опыт в этом, мог бы пообщаться по электронной почте или в чате?
Вот трассировка стека:
04-05 21:11:35.363: ERROR/AndroidRuntime(25707): java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(16908298, class android.widget.ListView) with Adapter(class com.mimminito.heatdroid.view.DealsView$DealAdapter)
Вот ссылка на образец моего кода:
http://pastebin.com/wfmWSGwQ
Я создаю Адаптер в onCreate (). Затем я назначаю Адаптер ListView после того, как XML был проанализирован. В этом же методе я вызываю метод updateList (). Это получает данные, которые были загружены, а затем уведомляет mAdapter, что его данные были изменены (все они выполняются в потоке пользовательского интерфейса)
Спасибо за ваше время
Адам