Флажок, 'Проверенный' в ListView, восстанавливается после прокрутки

У меня есть следующая проблема:

У меня есть ListActivity, его ListView составлен значком, текстом и флажком (использующий LayoutInflater).

Адаптер для ListView расширяет ResourceCursorAdapter (т.е. источник данных ListView получен от базы данных, также состояние Checked каждой строки),

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

База данных IS изменила, это не проблема (т.е. если я изменяю строку и выхожу из действия и вхожу снова, измененная строка отображена хорошо).

Мое предположение - то, что это имеет что-то, чтобы сделать о том, как список представляется, потому что по некоторым причинам ListView "представляет" исходное состояние всех строк, когда он был сначала заполнен при прокрутке.

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

5
задан adrianrdzv 4 April 2010 в 14:27
поделиться

1 ответ

Когда элемент появляется в поле зрения, будет вызван ваш метод ListAdapter.getView ().

Это может происходить несколько раз за сеанс, если, например, вы прокрутите элемент с экрана, а затем снова включите его.

Я бы посоветовал вам поставить точку останова на getView () и запустить приложение с отладчиком. Повторите свой тест и, если getView () вызывается во второй раз, проверьте логику, в которой установлен ваш флажок.

Еще одно соображение заключается в том, что вторым параметром getView является представление convertView. Это одно из ваших собственных представлений из других записей списка, которое больше не отображается. ОС возвращает вам это представление, чтобы у вас была возможность «переработать» представление для создания новой записи, вместо того, чтобы создавать новую, что повлияет на производительность.

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

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

1
ответ дан 15 December 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: