Как сделать недействительным подмножество данных в PagedList или DataSource?

В библиотеке подкачки Android как сделать недействительным подмножество набора данных в PagedList или DataSource? Я пишу PagedList или DataSource, потому что я не знаю, какой из них мне следует вызывать.

Например, я делаю приложение QA под названием BufferOverflow.

у меня есть PageKeyedDataSource которые загружают данные по сети. Он поддерживает разбиение на страницы по индексу по API. В этом приложении у меня есть экран "Главный вопрос" с "бесконечным" списком главных вопросов. Конечно, главный вопрос периодически обновляется.

Как:

  1. Обновить набор данных на странице 1?
  2. Обновить набор данных на странице 10?

Я понимаю, что преимущество использования PagedList заключается в том, что он будет делать расчет, какой элемент новый / старый, используя DiffUtil, Но, как мне сказать это набор данных на определенных key или же position изменилось?

Это то, что я спрашиваю, невозможно? Должен ли я реализовать пользовательское поведение подкачки самостоятельно?


Замечания:

  1. Я не хочу аннулировать все данные.

. Adapter.getCurrentList() GetDataSource() недействительными ().

Это сделает недействительными все данные об источнике данных. Пока я просто хочу сделать недействительной определенную часть данных.

  1. Я думаю, что API, который я ищу, похож на RecyclerView.Adapter's

list.adapter.notifyItemChanged (0);

Но, конечно же, адаптер не обязан обновлять набор данных. Это либо на PagedList, DataSourceили Дао классы..

0 ответов

Единственный способ решить эту проблему - ввести слой сохранения с помощью Room. https://github.com/googlesamples/android-architecture-components/tree/master/PagingWithNetworkSample

В соответствии с документами здесь: https://developer.android.com/reference/androidx/paging/DataSource

Если у вас есть более детализированные сигналы обновления, такие как сетевой API, сигнализирующий об обновлении одного элемента в списке, рекомендуется загружать данные из сети в память. Затем представьте эти данные в PagedList через DataSource, который является оболочкой для моментального снимка в памяти. Каждый раз, когда копия в памяти изменяется, можно сделать недействительным предыдущий источник данных, и может быть создан новый, заключающий в себе новое состояние моментального снимка.

https://developer.android.com/topic/libraries/architecture/paging/data

Создавая наблюдаемые объекты PagedList, подумайте, как работают обновления содержимого. Если вы загружаете данные непосредственно из базы данных Room, обновления автоматически передаются в пользовательский интерфейс вашего приложения.

Другие вопросы по тегам