Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对内存中的项目使用android分页库_Android_Kotlin_Rx Java_Rx Java2_Rx Android - Fatal编程技术网

对内存中的项目使用android分页库

对内存中的项目使用android分页库,android,kotlin,rx-java,rx-java2,rx-android,Android,Kotlin,Rx Java,Rx Java2,Rx Android,我尝试使用rxJava实现分页库,首先,我调用NetworkApi来加载完整数据,然后我想使用分页来加载完整数据,我如何使用库,我尝试使用ItemKeyedDataSource类,但是请,我是否总是需要将元素大小传递给api调用,还是只能处理内存中加载的数据 这是我的api调用: public fun getMembersPagination(): MutableLiveData<ResultContainer<PagedList<MembersModel.Data.Mem

我尝试使用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
}
public fun getMembersPagination():MutableLiveData{
一次性=client.getMembersPaged()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
。重试(0)
.订阅(
{结果->
onRetrieveUserData(结果)
},
{错误->onRetrieveUserDataError(错误)}
)
返回页面列表
}
我不处理Api中的分页

这是api:

  @GET("members")
fun getMembersPaged(): Observable<PagedList<MembersModel.Data.Member?>>
@GET(“成员”)
fun getMembersPaged():可观察
ItemKeyedData源代码:

    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)
}
class MembersPaginationDataSource(私有val memberId:Int)
:ItemKeyedDataSource(){
懒惰的val客户端{
reformationclient.reformationclient()
}
var一次性:一次性?=null
私有变量allMembers=MutableLiveData()
重写fun loadInitial(参数:LoadInitialParams,回调:LoadInitialCallback){
getMembersPagination().observe()
}
重写fun loadAfter(参数:LoadParams,回调:LoadCallback){
}
覆盖有趣的loadBefore(参数:LoadParams,回调:LoadCallback){
}
重写fun getKey(item:MembersModel.Data.Member):Int=item.id!!
public fun getMembersPagination():MutableLiveData{
一次性=client.getMembersPaged()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
。重试(0)
.订阅(
{结果->
onRetrieveUserData(结果)
},
{错误->onRetrieveUserDataError(错误)}
)
返回所有成员
}
private fun onRetrieveUserData(membersModel:PagedList?){
allMembers.postValue(membersModel)
}
private fun onRetrieveUserDataError(错误:可丢弃){
allMembers.postValue(null)
}
}


我就到此为止

您的自定义
ItemKeyedDataSource
实现是什么?为什么要将它与rx混合使用?我用RxJava进行api调用,我想在内存中一次加载所有项并使用分页为什么要用rx进行api调用?您的自定义
ItemKeyedDataSource
实现是什么?例如,你看到了吗?我在100KB的顶端添加了代码?200x200像素的小图像占用更多内存。。。因此,您不必担心适配器中的任何分页