Android BaseAdapter.notifyDataSetChanged () не обновляет представление - PullRequest
1 голос
/ 18 января 2012

У меня есть GridView с прикрепленным к нему BaseAdapter.Сам GridView заключен в ViewFlipper.

Я отображаю GridView, вызывая метод setDisplayedChild() для ViewFlipper, затем обновляю набор данных, проверенный BaseAdapter, и, наконец, я вызываю notifyDataSetChanged() на адаптере.Обычно он не обновляет GridView новым содержимым, а иногда случайным образом обновляет его, поэтому он кажется непредсказуемым.

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

Я пытался вызвать notifyDataSetChanged() в UIThread, я пытался принудительно обновить представлениепозвонив forceLayout(), requestLayout(), invalidate(), invalidateChildren() и т. д., но ничего не изменится.

Даже если я вызываю notifyDataSetChanged() с кнопки, ничего не происходит, просто вращая устройство илиблокировка и разблокировка обновляет изображение.

Я занимаюсь разработкой на планшете Asus с Android 3.2.

Может кто-нибудь мне помочь или дать подсказку?

Спасибоочень сильно!

1 Ответ

0 голосов
/ 18 января 2012

Если ваше представление не обновляется с использованием всего вышеперечисленного, то вам нужно перерисовать сетку, или вы можете сделать одну вещь, когда вы устанавливаете адаптер вашей сетки, поместите эти строки в метод Resume и вызовите onResume () после внесенных изменений ваши данные.

...