ViewModel:
val eventDataFactory = AppDatabase.getInstance(context)!!.eventDao().getEventList()
val pagedListConfig = PagedList.Config.Builder()
.setEnablePlaceholders(false)
.setInitialLoadSizeHint(10)
.setPrefetchDistance(2)
.setPageSize(10).build()
eventListResponse = LivePagedListBuilder(eventDataFactory, pagedListConfig)
.build()
fun getEventListLiveData(): LiveData<PagedList<Event>> {
return eventListResponse!!
}
Fragment:
viewModel.getEventListLiveData().observe(this@Fragment, Observer {
Log.d("Fragment", "eventList Update: " + it!!.size)
for (event: Event in it) {
if (event != null)
Log.d("Fragment", "EventId: " + event.eventId)
}
eventListAdapter!!.submitList(it)
})
EventDao:
@Query("SELECT * FROM event")
fun getEventList(): DataSource.Factory<Int,Event>
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertAll(events: List<Event>): List<Long>
I have 55 entries in my local database and I suppose to get 10 entries on each scroll. I only get eventList Update: 10
for first time, after that adapter gets updated value but observer did not triggers.
Also when I insert new value in database I observer returned only first 10 value instead of newly added value.