1

我有 PagingDataAdapter,它包含在 ConcatAdapter 内的 GridAdapter 中。当我收集这样的数据时:

lifeCycleScope.launch { viewModel.setPostState().collectLatest {pagingData->postsAdapter.notifyItems(pagingData) } } 

分页库开始按顺序加载所有页面,无需任何滚动。

postsAdapter 是一个带有 GridLayoutManager 的适配器,它是 PagingDataAdapter 的一个包装

viewModel 中的 setPostState 函数:

 fun setPostState(): Flow<PagingData<Post>> = 
        Pager(
            PagingConfig(
                PAGE_SIZE,
                initialLoadSize = INIT_LOAD_SIZE
            )
        )
        {
            PostsPagingSource { page, pageSize ->
                useCase.getPosts(page, pageSize)
            }
        }
            .flow
            .cachedIn(viewModelScope)

GridAdapter 中的 notifyItems 函数:

suspend fun notifyItems(data: PagingData<Post>) {
        withContext(Default) { nestedAdapter.submitData(data) }
    }

我怀疑 concat 适配器为我的 GridAdapter 提供了无限的高度,它开始加载所有内容,就好像我将 recyclerView 放在 nestedScrollView 中一样

4

0 回答 0