0

ページング 3 を使用してい3.0.0-beta02ます。スワイプ リフレッシュ レイアウトで使用しているときに気づいたことの 1 つは、この問題により、ページ 2 が最初にロードされ、ページ 1 とページ 3 がロードされ、アダプターがページ 2 の開始位置の中央までスクロールすることです。

フラグメントに移動すると、最初に2ページが読み込まれることに気付きました。

もう1つ更新すると、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
    }
}

ハッキーな修正を見つけましたが、実際の解決策を知りたいです

override fun getRefreshKey(state: PagingState<Int, Chapter>): Int? {
    // return state.anchorPosition
    return 1
}
4

0 に答える 0