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