LiveData срабатывает только один раз при поиске по комнате - PullRequest
0 голосов
/ 15 мая 2019

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!!
}

Фрагмент:

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>

У меня есть 55 записей в моей локальной базе данных, и я предполагаю получить 10 записей на каждом свитке. Я получаю eventList Update: 10 только в первый раз, после того, как этот адаптер получает обновленное значение, но наблюдатель не запускает. Также, когда я вставляю новое значение в базу данных, наблюдатель возвращает только первые 10 значений вместо вновь добавленного значения.

...