Моя проблема: 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 вообще перемещался при его обновлении. Это привяжет его к позиции в списке.
Кажется, это должна быть обычная и простая проблема. Кто-нибудь имел дело с этим?