использование библиотеки разбиения на страницы Android с элементами в памяти - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь реализовать библиотеку разбивки на страницы, используя rxJava. Прежде всего, я вызываю NetworkApi для загрузки полных данных, затем я хочу использовать разметку страниц с полными загруженными данными, как я могу сделать это с библиотекой,я пытаюсь использовать класс ItemKeyedDataSource, но, пожалуйста, всегда ли мне нужно передавать размер элемента моему вызову API или я могу работать только с данными, загруженными в память?

это мой вызов API:

  public fun getMembersPagination(): MutableLiveData<ResultContainer<PagedList<MembersModel.Data.Member?>>> {
    disposable = client.getMembersPaged()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .retry(0)
            .subscribe(
                    { result ->
                        onRetrieveUserData(result)
                    },
                    { error -> onRetrieveUserDataError(error) }
            )

    return pagedList
}

Я не лечу пагианцию ​​от моего API

Это API:

  @GET("members")
fun getMembersPaged(): Observable<PagedList<MembersModel.Data.Member?>>

ItemKeyedDataSource код:

    class MembersPaginationDataSource(private val memberId: Int)
: ItemKeyedDataSource<Int, MembersModel.Data.Member?>() {

val client by lazy {
    RetrofitClient.RetrofitClient()
}

var disposable: Disposable? = null

private var allMembers = MutableLiveData<PagedList<MembersModel.Data.Member?>>()


override fun loadInitial(params: LoadInitialParams<Int>, callback: LoadInitialCallback<MembersModel.Data.Member?>) {

    getMembersPagination().observe()


}

override fun loadAfter(params: LoadParams<Int>, callback: LoadCallback<MembersModel.Data.Member?>) {
}

override fun loadBefore(params: LoadParams<Int>, callback: LoadCallback<MembersModel.Data.Member?>) {


}

override fun getKey(item: MembersModel.Data.Member): Int = item.id!!


public fun getMembersPagination(): MutableLiveData<PagedList<MembersModel.Data.Member?>> {
    disposable = client.getMembersPaged()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .retry(0)
            .subscribe(
                    { result ->
                        onRetrieveUserData(result)
                    },
                    { error -> onRetrieveUserDataError(error) }
            )

    return allMembers
}


private fun onRetrieveUserData(membersModel: PagedList<MembersModel.Data.Member?>?) {
    allMembers.postValue(membersModel)
}

private fun onRetrieveUserDataError(error: Throwable) {
    allMembers.postValue(null)
}

}

я останавливаюсь в этой точке

...