Учитывая ListActivity
с ListView
и требование изменить элемент на основе ввода пользователем, каким образом можно внести изменения, чтобы изменение сохранилось при прокрутке?Android: обновление элемента в ListView, который выживает при прокрутке
В настоящее время приложение использует ResourceCursorAdapter
, заполненный из базы данных. Когда пользователь долго нажимает на элемент, ImageView
на этом элементе переключается между View.VISIBLE
и View.GONE
. Кроме того, управляется флаг в базе данных, поддерживающей состояние представления.
Но когда этот элемент прокручивается с экрана, а затем обратно на экран, элемент отображается без недавнего изменения. Другими словами, если я делаю вид ImageView
видимым с длинным щелчком, он показывает штраф. Но когда я отскакиваю от этого предмета, затем прокручиваюсь назад, он больше не виден.
Мое текущее решение (которое, я думаю, неверно) заключается в том, чтобы сохранить положение прокрутки, обновить весь список из базы данных, а затем снова поместить в нужное место.
Я предполагаю, что есть какой-то способ сказать какой-то Androidy, чтобы добавить новое состояние видимости в его кеш, но я не могу его найти. Я пробовал setScrollingCacheEnabled(false)
, и некоторые другие кеширования были ложными, но ни один из них, похоже, не изменил ситуацию. Я попытался понять, как заставить Android осознать, что это «грязно», но все, что я нашел, это запрос, если он isDirty()
. Я также пробовал ResourceCursorAdapter.notifyDataSetChanged()
, и это сделало setVisibility()
вызов неэффективным по видимости. Я также пробовал invalidate()
и invalidateViews()
в разных местах. Это могло бы быть одно из них, если бы оно было применено к правильному объекту в правильной последовательности (до или после изменения видимости).
Вы изменяя данные, когда пользователь нажимает на длинном любой строке? Вы должны изменить модель данных так, чтобы в следующий раз строка будет накачана в соответствии с новым классом модели данных. ... – Kushal
Предпочтительным методом для функции «ListView» является «RecylcerView». Ответ здесь содержит сведения об управлении списком, который управляет измененными пользователем данными в списке, реализованном с использованием предпочтительного метода: http://stackoverflow.com/a/40568269/897007 – Dale