android - 将android分页库与内存中的项目一起使用
问题描述
我尝试使用 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 中处理 pagiantion
这是api:
@GET("members")
fun getMembersPaged(): Observable<PagedList<MembersModel.Data.Member?>>
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)
}
}
我停在那一点
解决方案
推荐阅读
- r - 如何更改格子图中的填充颜色?
- android - onPause 后的 Android LiveData Observer
- android - 如何在android studio的listview中获取子项的值
- javascript - 重定向 React-Native、Paytabs 后从 webView 获取响应
- javascript - django 如何使用 post 方法获取 javascript 生成输入表单?
- matlab - 在字面上写的矩阵中,用省略号或不用椭圆结束行之间有什么区别?
- xml - 如何使用 XSLT 1.0 在某些条件下限制 for-each 循环?
- angular - 使用 angularfire2 和 stateChanges () 构造 ngrx
- javascript - 什么是 html 中的 idm_frm 属性?
- ios - 无法从 UIWebView 获取 HTML 字符串