Моя проблема: мой ListView сбрасывает свою позицию прокрутки в верхнюю часть всякий раз, когда я обновляю его содержимое через его (настраиваемый) SimpleCursorAdapter. Я хотел бы, чтобы ListView сохранял свою позицию прокрутки при обновлении.
Я начал с создания нового экземпляра адаптера каждый раз и с использованием ListView.setAdapter()
, но согласно этому обсуждению я должен обновлять адаптер, а не сбрасывать его. Я не могу найти способ сделать это для SimpleCursorAdapter, который работает правильно.
Вот некоторые вещи, которые я пробовал, опуская аргументы метода:
- SimpleCursorAdapter.changeCursorAndColumns()
с новым курсором успешно обновляет адаптер, но все еще сбрасывает позицию прокрутки.
- SimpleCursorAdapter.changeCursor()
действует так же.
- SimpleCursorAdapter.swapCursor()
недоступен до API 11, и я разрабатываю для API 8.
- SimpleCursorAdapter.notifyDataSetChanged()
не обновляет ListView. (Может быть, я пропускаю еще один шаг.)
- ListView.invalidate()
не обновляет ListView.
- SimpleCursorAdapter.requery()
делает ListView пустым и устарела.
- Я знаком с решением ListView.setSelection()
, но я не хочу, чтобы мой ListView вообще перемещался при обновлении. Это привязывает его к позиции в списке.
Кажется, это должно быть обычной и простой проблемой. Кто-нибудь имел дело с этим?