Содержимое ListActivity/ListView исчезает

У меня проблема с моим ListView в ListActivity с Custom ArrayAdapter.

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

Я думаю, что массив должен быть переназначен в одном из onResume(), onStart() или onRestart(), но я ищу более конкретную причину, поскольку это происходит редко и никогда с моими адаптерами на основе курсора.


person Kenny    schedule 12.10.2010    source источник
comment
@user473677: user473677: Пожалуйста, определите, кажется, уходит.   -  person CommonsWare    schedule 12.10.2010
comment
Когда представление становится видимым позже, оно пустое (без элементов списка). Из подсказок я предполагаю, что это потому, что ListActivity выпускает свой адаптер в onPause или onStop(). Итак, я переместил инициализацию данных/setListAdapter() в onResume(), что трудно проверить, так как я не знаю, как заставить onStop...   -  person Kenny    schedule 09.11.2010


Ответы (1)


Ваша проблема немного расплывчата, но я дам несколько советов для рассмотрения.

Не заполняйте данные внутри метода onCreate. onCreate() следует использовать для определения представления. Используйте onResume() для загрузки данных, чтобы вы могли эффективно очищать и экономить память с помощью onPause().

Убедитесь, что ваш пользовательский ArrayAdapter правильно обрабатывает getView, так как это может быть источником других проблем.

person Will Vanderhoef    schedule 12.10.2010
comment
Кроме того, похоже, что он вращает телефон/экран. Когда экран вращается, текущая активность уничтожается и создается заново. Итак, ваш метод onCreate() снова вызывается. Думаю, ему придется показать нам код. - person Andrew; 13.10.2010