Обновление SimpleCursorAdapter с сохранением позиции прокрутки в ListView

Моя проблема: My 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 вообще перемещался при его обновлении. Это привяжет его к позиции в списке.

Кажется, это должна быть обычная и простая проблема. Кто-нибудь имел дело с этим?

9
задан pvans 16 February 2012 в 13:04
поделиться