Как сделать недействительным подмножество данных в PagedList или DataSource?
В библиотеке подкачки Android как сделать недействительным подмножество набора данных в PagedList или DataSource? Я пишу PagedList или DataSource, потому что я не знаю, какой из них мне следует вызывать.
Например, я делаю приложение QA под названием BufferOverflow.
у меня есть PageKeyedDataSource
которые загружают данные по сети. Он поддерживает разбиение на страницы по индексу по API. В этом приложении у меня есть экран "Главный вопрос" с "бесконечным" списком главных вопросов. Конечно, главный вопрос периодически обновляется.
Как:
- Обновить набор данных на странице 1?
- Обновить набор данных на странице 10?
Я понимаю, что преимущество использования PagedList заключается в том, что он будет делать расчет, какой элемент новый / старый, используя DiffUtil
, Но, как мне сказать это набор данных на определенных key
или же position
изменилось?
Это то, что я спрашиваю, невозможно? Должен ли я реализовать пользовательское поведение подкачки самостоятельно?
Замечания:
- Я не хочу аннулировать все данные.
. Adapter.getCurrentList() GetDataSource() недействительными ().
Это сделает недействительными все данные об источнике данных. Пока я просто хочу сделать недействительной определенную часть данных.
- Я думаю, что 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, обновления автоматически передаются в пользовательский интерфейс вашего приложения.