【发布时间】:2021-11-06 14:15:30
【问题描述】:
如何判断分页是否正常工作?我看过的所有示例都涉及使用retrofit apiservice,它似乎正在返回数据页面,但我正在拉下一个RSS提要并将其解析成一个巨大的List<POJO>。我怀疑我的PagingSource 正在将整个列表加载到一个页面中,但我不知道如何判断。
我的列表有近 1000 个项目,所以我认为实现某种分页/DiffUtil 是一种好习惯。我正在使用jetpack compose 使用androidx.paging:paging-compose:1.0.0-alpha12 来解决这个问题,这可能会使事情复杂化。
谁能指点一下?
class RssListSource(): PagingSource<Int, RssItem>() {
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, RssItem> {
return try {
val nextPage = params.key ?: 1
val rssList: List<RssItem> = RssFeedFetcher().fetchRss()
LoadResult.Page(
data = rssList,
prevKey = if (nextPage == 1) null else nextPage - 1,
nextKey = nextPage.plus(1)
)
} catch (e: Exception){
LoadResult.Error(e)
}
}
}
class MainActivityViewModel: ViewModel() {
val rss: Flow<PagingData<RssItem>> = Pager(PagingConfig(pageSize = 10)){
RssListSource() // returned to LazyPagingItems list in @Composable
}.flow.cachedIn(viewModelScope)
}
【问题讨论】:
标签: android kotlin android-jetpack-compose android-paging