Я пытаюсь использовать Android Пейджинг с ItemKeyedDataSource. Сетевой вызов выбирает список элементов, но мой pagedList не обновляется со списком.
`override fun loadInitial(
params: LoadInitialParams<String>,
callback: LoadInitialCallback<InteractionEntity>
) {
Timber.d("load Initial called")
interactionsRepository.getInteractions(params.requestedLoadSize,reviewFiltersEntity.locationId,reviewFiltersEntity.startDate,
reviewFiltersEntity.endDate,reviewFiltersEntity.siteUrls,reviewFiltersEntity.ratingFilters,reviewFiltersEntity.responseStatus,null,null)
.subscribe(object: Observer<List<InteractionEntity>>{
override fun onComplete() {
Timber.d("getInteractions complete")
}
override fun onSubscribe(d: Disposable) {
Timber.d("getInteractions subscribed ")
}
override fun onNext(t: List<InteractionEntity>) {
Timber.d("getInteractions onNext "+t.size)
callback.onResult(t)
}
override fun onError(e: Throwable) {
Timber.d("getInteractions error "+e.message)
}
})
}`
DataSourceFactory
'var interactionDataSourceLiveData = MutableLiveData<InteractionDataSource>()
override fun create(): DataSource<String, InteractionEntity> {
val interactionDataSource = InteractionDataSource(interactionsRepository,locationsRepository,reviewFiltersEntity)
interactionDataSourceLiveData.postValue(interactionDataSource)
return interactionDataSource
}'
ViewModel
'fun loadInteractions(reviewFiltersEntity: ReviewFiltersEntity){
interactionDataSourceFactory = InteractionDataSourceFactory(interactionsRepository,locationsRepository,reviewFiltersEntity)
interactionDataSourceLiveData = interactionDataSourceFactory?.interactionDataSourceLiveData
var config = PagedList.Config.Builder()
.setEnablePlaceholders(true)
.setInitialLoadSizeHint(10)
.setPageSize(20)
.setPrefetchDistance(4)
.build()
interactionsPagedList = LivePagedListBuilder<String, InteractionEntity>(interactionDataSourceFactory!!,config)
.setFetchExecutor(executor)
.build()
}'
Activity
'interactionPagingViewModel?.loadInteractions(reviewFiltersEntity)
interactionPagingViewModel?.interactionsPagedList?.observe(this, Observer {
Timber.d("interaction paged list changed ")
if(!it.isNullOrEmpty()){
Timber.d("fetched interactions in paging "+it.size)
adapter.submitList(it)
}else{
showError(R.string.error_fetching_reviews)
}
})'
Я вижу список, извлеченный в loadInitial, но я не вижу того же onChanged of Observer выше.
Любая идея Что может быть не так?