我正在使用分页 3 3.0.0-beta02
。当我将它与滑动刷新布局一起使用时,我注意到它调用第 2 页然后第 1 页,由于此问题,第 2 页在第 1 页和第 3 页之后首先加载,并且适配器滚动到第 2 页开始的中间位置。
我最初注意到同样的事情,当我转到片段时它会加载 2 页。
另一件事刷新第二次或更进一步它工作正常,但它仍然加载 2 页。最初是第 1 页,然后是第 2 页
这是我的分页配置
@WorkerThread
fun getLiveSession(freeOrPaid: String, catId: String) = Pager(
config = PagingConfig(
pageSize = 10,
initialLoadSize = 10
),
pagingSourceFactory = { LiveSessionPagingSource(apiClient, userPrefsStore, freeOrPaid, catId) }
).flow.flowOn(Dispatchers.IO).cachedIn(viewModelScope)/
寻呼源
class LiveSessionPagingSource(private val apiClient: ApiClient) : PagingSource<Int, LiveSession>() {
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, LiveSession> {
return try {
val page = if (params.key == null || params.key == 0) STARTING_PAGE_INDEX else params.key!!
val response = apiClient.getLiveSession(page, params.loadSize)
LoadResult.Page(
data = response,
prevKey = if (page == STARTING_PAGE_INDEX) null else page - 1,
nextKey = if (response.size < params.loadSize) null else page + 1
)
} catch (throwable: Throwable) {
LoadResult.Error(throwable)
}
}
override fun getRefreshKey(state: PagingState<Int, LiveSession>): Int? {
return state.anchorPosition
}
companion object {
private const val STARTING_PAGE_INDEX = 1
}
}
我找到了一些hacky修复,但我想知道真正的解决方案
override fun getRefreshKey(state: PagingState<Int, Chapter>): Int? {
// return state.anchorPosition
return 1
}