2

java.lang.IllegalStateException: содержимое адаптера изменилось, но ListView не получил уведомление. Убедитесь, что содержимое адаптера не изменено из фонового потока, но только из потока пользовательского интерфейса.просмотр списка java.lang.IllegalStateException даже после вызова notifyDataSetCanged();

мой список ракурс содержит огромные data`s

звонят сильфон кода с помощью обработчику при изменении данных в списке

listviewAdapter.notifyDataSetChanged(); 

, но я получаю ту же ошибку несколько раз и не каждый время я загружаю его заранее

ответ

0

ошибка довольно ясна. Вы не должны звонить listviewAdapter.notifyDataSetChanged(); из потока, отличного от потока пользовательского интерфейса.

+0

Добавление к нему вы можете вызвать 'listviewAdapter.notifyDataSetChanged();' из потока без UI, используя 'runOnUiThread()' –

+0

. Содержимое адаптера изменилось, но ListView не получил уведомление. Убедитесь, что содержимое вашего адаптера не изменено из фонового потока, ** bold ** ', но только из потока пользовательского интерфейса. – Sathyapradeep

+0

мы должны изменить только из потока пользовательского интерфейса .. am change from UI thread only – Sathyapradeep

0

Измените аргументы адаптера в runOnUIThread() или используйте обработчик для уведомления адаптера, который изменил набор данных.

+0

Я использовал обработчик для уведомления см. ниже комментарий в ответе номер 3 – Sathyapradeep

2

вопрос не там, где обновление адаптера, он должен быть: время обновления адаптера.

выглядит так: ваши данные привязываются к адаптеру, а ui обновлены, поэтому на этот раз система обнаружила, что данные изменены, но не может вызвать notifyDataSetChanged.

так, предложение при изменении данных в адаптере, вызовите notifyDataSetChanged немедленно,

или

DonT направленного изменения данных в адаптере в вашей теме, вы должны отправить данные в hanlder и в handler используя данные для замены или изменения данных адаптера и notifyDataSetChanged.

так или иначе, предположение, что данные могут выполняться в фоновом потоке и обновлять данные, notifyDataSetChanged, используемые в ui thread.

+0

Я не изменяю данные адаптеров из фоновой темы .. Также я звоню notifyDataSetChanged, когда содержимое списка, которое передается адаптеру, изменяется .. Я получаю эту ошибку только тогда, когда огромные данные как более 500 + данных, загружаемых в список – Sathyapradeep

+0

, можете ли вы описать, как вы быстро обновляете данные адаптера? – idiottiger

+0

Я меняю список в фоновом потоке, который в свою очередь присваивается адаптеру изначально .. после изменения я вызываю обработчик (поток пользовательского интерфейса) в обработчике i cal notifyDataSetChanged() ..это то, что я точно делаю, но я получаю это исключение, в то время как огромные данные 'ы есть, но я получаю эту ошибку с небольшими (до 300 элементов списка). Количество данных Я называю это notifyDataSetCahnged для обновления моего списка с помощью новых или обновленные данные ' – Sathyapradeep

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