0

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.

user3606902
  • 829
  • 1
  • 10
  • 25

0 Answers0