Я использую SQLiteCursorLoader, расширив AsyncTaskLoader с помощью фрагмента списка, мне удалось сохранить позицию, когда появляются новые данные, сохраняя позицию и представление, а затем используйте setSelectionFromTop(), который работал отлично.Сохранить позицию в списке Fragment после изменения курсора в Android
Вот как это в настоящее время работает,
DB данных перед курсором перезаряжания,
Field1 int, timestamp long
------------------
First row, now
Second row, 1 minute ago
Third row, 2 minutes ago -----> user is currently on this item in the listview
DB после того, как курсор перезаряжания,
Field1 int, timestamp long
------------------
Fourth row, now
First row, 30 secon ago
Second row, 1 minute + 30 seconds ago
Third row, 2 minutes + 30 seconds ago --> go here using setSelectionFromTop(position, y)
После курсора перезагрузок, я сохраняю позицию «Третий ряд», поскольку я сохраняю старую позицию, , поэтому мне нужно было всего лишь вычислить старую позицию - новый подсчет курсора
Теперь у меня есть новые требования (показано ниже), в которые будут входить не только новые данные, но и старые данные, которые изменят позиции, что изменится - это отметка времени старых данных, поэтому результат запроса, используемого в SQLiteCursorLoader, будет другим, я больше не могу использовать старый метод.
Field1 int, timestamp long
------------------
First row, now
Second row, 1 minute ago
Third row, 2 minutes ago -----> user is currently on this item in the listview
DB после того, как курсор перезаряжания,
Field1 int, timestamp long
------------------
Third row, now
First row, 30 secon ago
Second row, 1 minute + 30 seconds ago
Как вы можете видеть, что позиция не будет то же самое сейчас. Теперь я должен использовать getItemId, чтобы получить идентификатор DB и сохранить его, и когда перезагрузка курсора, мне придется пройти через него, чтобы получить его положение.
Мой вопрос: возможно ли это сделать другим способом?
Пожалуйста, дайте мне знать, если вам нужно больше разъяснений.