If you look at Loading Data from PagedList
documentation you'll notice the following:
If you use LivePagedListBuilder
to get a LiveData<PagedList>
, it will initialize PagedLists on a background thread for you.
Also, Mutability and Snapshots states the following:
A PagedList is mutable while loading, or ready to load from its DataSource. As loads succeed, a mutable PagedList will be updated via Runnables on the main thread. You can listen to these updates with a PagedList.Callback
. (Note that PagedListAdapter
will listen to these to signal RecyclerView about the updates/changes).
If you want to listen for the events onInserted
, onChanged
or onRemoved
you can do the following:
viewModel.observableData.observe(viewLifecycleOwner, Observer { pagedList ->
adapter.submitList(pagedList)
pagedList.addWeakCallback(null, object: PagedList.Callback() {
override fun onChanged(position: Int, count: Int) {}
override fun onInserted(position: Int, count: Int) {
println("count: $count")
}
override fun onRemoved(position: Int, count: Int) {}
})
})