2010-10-12 5 views
1

У меня возникла проблема с моим ListView в ListActivity с помощью Custom ArrayAdapter.Содержимое ListActivity/ListView «исчезает»

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

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

+0

@ user473677: Пожалуйста, определите, что «похоже, уходит». – CommonsWare

+0

Когда вид становится видимым позже, он пуст (без элементов списка). Я предполагаю, что это связано с тем, что ListActivity выпускает его адаптером в onPause или onStop(). Поэтому я перевел инициализацию данных/setListAdapter() на onResume(), трудно проверить, поскольку я не знаю, как заставить onStop ... – Kenny

ответ

1

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

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

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

+0

Кроме того, похоже, что он поворачивает телефон/экран. Когда экран вращается, текущая активность уничтожается и воссоздается. Поэтому ваш метод onCreate() снова вызывается. Думаю, ему придется показать нам какой-то код. – Andrew

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