gpt4 book ai didi

Android Paging(三)一次加载所有页面

转载 作者:行者123 更新时间:2023-12-04 23:44:59 26 4
gpt4 key购买 nike

我在我的项目中使用 Android Paging 3 库来逐页加载我的数据。在这个项目中,我没有使用数据库,这意味着我正在使用 network only requests .问题是它不是基于用户滚动加载页面,而是首先加载所有页面。这是我用于项目分页部分的代码:
我的 RxPagingSource 类:

class ReviewPagingSource constructor(
private val network: Network,
private val filter: ReviewFilter,
private val config: Config,
private val cacheFirstResponse: Boolean
) : RxPagingSource<Int, Review>() {

override fun loadSingle(params: LoadParams<Int>): Single<LoadResult<Int, Review>> {
return network.getReviews(
filter.copy(page = (params.key ?: 0) , pageSize = params.loadSize),
config,
cacheFirstResponse
)
.subscribeOn(Schedulers.io())
.map { toLoadResultPage(it, params) }
.onErrorResumeNext {
when (it) {
is TimeoutException,
is NoInternetException, is NetworkException, is UnexpectedResponseException -> Single.just(
LoadResult.Error(it)
)
else -> Single.error(it)
}
}
}

private fun toLoadResultPage(
response: DataResponse<Review>,
params: LoadParams<Int>
): LoadResult<Int, Review> {
val page = params.key ?: 0
return LoadResult.Page(
response.results!!,
if (page <= 0) null else page - 1,
if (response.count ?: response.results?.count() ?: 0 < params.loadSize) null else page + 1,
LoadResult.Page.COUNT_UNDEFINED,
LoadResult.Page.COUNT_UNDEFINED
)
}

override fun getRefreshKey(state: PagingState<Int, Review>): Int? {
return state.anchorPosition?.let { state.closestPageToPosition(it) }?.nextKey
}
}
我的寻呼机是:
Pager(PagingConfig(pageSize = 5, initialLoadSize = 5,)) 
{ ReviewPagingSource(network, filter, config, true) }
.flow.cachedIn(viewModelScope)
相关 Gradle 部分:
implementation "androidx.paging:paging-runtime-ktx:3.0.0-alpha13"
implementation "androidx.paging:paging-rxjava3:3.0.0-alpha13"
任何帮助,将不胜感激。

最佳答案

就我而言,这 recipeId数据类型很长,但是当我将其更改为字符串时,它工作正常。然后,而不是 NestedScrollView使用 SmartNestedScrollview

@Entity(tableName = "table_recipe")
data class RecipeList(
@PrimaryKey
@field:SerializedName("recipe_id") var recipeId : String,
@field:SerializedName("title") var title: String? = null,
)

关于Android Paging(三)一次加载所有页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66023893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com