Восстановление положения прокрутки в библиотеке подкачки 3Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Восстановление положения прокрутки в библиотеке подкачки 3

Сообщение Anonymous »

Я использую библиотеку подкачки 3 с RemoteMediator, который включает загрузку данных из сети и локальной базы данных комнаты. Каждый раз, когда я прокручиваю определенную позицию в RecyclerView, перехожу к другому фрагменту, а затем возвращаюсь к фрагменту со списком, состояние прокрутки не сохраняется, и RecyclerView отображает список с самого первого элемента вместо позиции Я был там до того, как ушел.
Я безуспешно пытался использовать StateRestorationPolicy и не могу найти способ получить позицию прокрутки PagingDataAdapter и восстановить ее до этого значения. та же самая позиция при переходе обратно к фрагменту.
В моей ViewModel у меня есть поток, который собирает данные из RemoteMediator:

Код: Выделить всё

val flow = Pager(config = PagingConfig(5), remoteMediator = remoteMediator) {
dao?.getListAsPagingSource()!!
}.flow.cachedIn(viewModelScope)
и я отправляю эти данные в адаптер внутри моего фрагмента:

Код: Выделить всё

viewLifecycleOwner.lifecycleScope.launch {
viewModel.flow.collectLatest { pagingData ->
adapter?.submitData(pagingData)
}
}
В верхней части фрагмента мой адаптер указан как:

Код: Выделить всё

class MyFragment : Fragment() {

...

private var adapter: FeedAdapter? = null

...

override onViewCreated(...) {

if (adapter == null) {
adapter = FeedAdapter(...)
}

recyclerView.adapter = adapter

viewLifecycleOwner.lifecycleScope.launch {
viewModel.flow.collectLatest { pagingData ->
adapter?.submitData(pagingData)
}
}
}
}
Как мы можем быть уверены, что адаптер отображает список именно там, где он был до того, как пользователь покинул фрагмент при возврате, а не начинает список заново с самой первой позиции?


Подробнее здесь: https://stackoverflow.com/questions/677 ... -library-3
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»