Я хочу использовать Библиотека подкачки из Android JetPack для разбивки на страницы. Я пытался по-разному, но ничего не получал пустой список (пустой RecyclerView ) ..
Я использую Dagger2 , OkHttp , Retrofit2 .Вот мой PageKeyedPhotoDataSource :
override fun loadInitial(params: LoadInitialParams<Int>, callback: LoadInitialCallback<Int, Photo>) {
networkState.postValue(NetworkState.LOADING)
initialLoad.postValue(NetworkState.LOADING)
// triggered by a refresh, we better execute sync
try {
val response = fetchPhotos(1).execute()
if (response.isSuccessful) {
val data = response.body()?.photos
val items = data?.map { it } ?: emptyList()
networkState.postValue(NetworkState.LOADED)
initialLoad.postValue(NetworkState.LOADED)
callback.onResult(items, null, 2)
} else {
initNetworkError("error code: ${response.code()}")
}
} catch (ioException: IOException) {
initNetworkError(ioException.message ?: "unknown error")
}
}
override fun loadAfter(params: LoadParams<Int>, callback: LoadCallback<Int, Photo>) {
networkState.postValue(NetworkState.LOADING)
fetchPhotos(params.key).enqueue(
object : retrofit2.Callback<PhotoService.PhotoWrapper> {
override fun onFailure(call: Call<PhotoService.PhotoWrapper>, t: Throwable) {
networkState.postValue(NetworkState.error(t.message ?: "unknown err"))
}
override fun onResponse(
call: Call<PhotoService.PhotoWrapper>,
response: Response<PhotoService.PhotoWrapper>
) {
if (response.isSuccessful) {
val data = response.body()?.photos
val items = data?.map { it } ?: emptyList()
callback.onResult(items, params.key + 1)
networkState.postValue(NetworkState.LOADED)
} else {
networkState.postValue(
NetworkState.error("error code: ${response.code()}"))
}
}
}
)
}
PhotoDataSourceFactory:
val sourceLiveData = MutableLiveData<PageKeyedPhotoDataSource>()
override fun create(): DataSource<Int, Photo> {
val source = PageKeyedPhotoDataSource(dataSource = dataSource,
query = query)
sourceLiveData.postValue(source)
return source
}
Вот фото-репозиторий:
fun getMovies(query: String, pageSize: Int): Listing<Photo>
ViewModel:
val movies = switchMap(repoResult) { it.pagedList }!!
А вот фрагмент:
viewModel.movies.observe(this, Observer<PagedList<Photo>>{
adapter.submitList(it)
})
RemoteDataSource:
fun fetchPhotos(page: Int): Call<PhotoService.PhotoWrapper> {
return photoService.getPhotos(page)
}
А вот мой PhotoService :
@GET("photos")
fun getPhotos(@Query("page") page: Int = 1, @Query("per_page") per_page: Int = 15): Call<PhotoWrapper>
class PhotoWrapper(
val photos: List<Photo>
)
Надеюсь, вы понимаете мой вопрос.Я просто хочу знать, почему RecyclerView пуст.И проблема в том, что у меня нет ошибок, и я не знаю, что мне делать.