Согласно документам :
Как правило, ваш код пользовательского интерфейса соблюдает объект LiveData (или, если вы используете RxJava2, объект Flowable или Observable), которыйнаходится в ViewModel вашего приложения.Этот наблюдаемый объект образует связь между представлением и содержимым данных списка вашего приложения.
Чтобы создать один из этих наблюдаемых объектов PagedList, передайте экземпляр DataSource.Factory объекту LivePagedListBuilder или RxPagedListBuilder.Объект DataSource загружает страницы для одного PagedList.Фабричный класс создает новые экземпляры PagedList в ответ на обновления содержимого, такие как аннулирование таблицы базы данных и обновление сети.Библиотека постоянства Room может предоставить вам объекты DataSource.Factory, или вы можете создать свой собственный.
Пример кода следующий:
// The Int type argument corresponds to a PositionalDataSource object.
val data: DataSource.Factory<Int, Person> = dao.getElements()
val dataList: LiveData<PagedList<Person>> = LivePagedListBuilder(data, /* page size */ 20).build()
Итак, вам нужно передатьваш DataSource.Factory<Int, Person>
объект на LivePagedListBuilder
и в конце вы получите LiveData<PagedList<Person>>
, который вы можете наблюдать.
После этого вам нужно подключить LiveData
кPagedListAdapter
как показано в следующем фрагменте кода:
private val adapter = YourDataAdapter()
override fun onCreate(savedInstanceState: Bundle?) {
dataList.observe(this, Observer { adapter.submitList(it) })
}
Пример кода адаптера, который вы можете найти здесь .