1

我可以从服务器获取记录总数,所以我PositionalDataSource用于网络调用。一切正常,但有一个问题:即使我不滚动,分页库也会继续从服务器获取所有数据。如何解决这个问题呢?使用:androidx.paging:paging-runtime-ktx:2.1.1

例子:

override fun loadInitial(params: LoadInitialParams, callback: LoadInitialCallback<Doctor>) {
    fetchDataFromApi(params.requestedStartPosition, params.pageSize) { list, totalCount ->
        callback.onResult(list, 0, totalCount)
    }
}
override fun loadRange(params: LoadRangeParams, callback: LoadRangeCallback<Doctor>) {
    fetchDataFromApi(params.startPosition, params.loadSize) { list, totalCount ->
        callback.onResult(list)
    }
}

PagedList.Config.Builder()
        .setPageSize(14)
        .setPrefetchDistance(4)
        .setInitialLoadSizeHint(14)
        .setEnablePlaceholders(true)
        .build()
4

1 回答 1

2

这听起来像是我在过去两天里研究的一个类似问题。对我来说,事实证明,我已经将我的RecyclerView内部包裹了一个NestedScrollView. 但是,根据Google tracker 上的这个问题,分页库没有内置支持。

当您将 recyclerview 放在无限滚动的父级中时,它将布局其所有子级,因为父级提供无限维度。

基本上NestedScrollView继续触发获取更多数据,就好像屏幕与完整列表一样长

如果您的情况也是这种情况,则有两种选择:

  1. 将布局设置更改为不需要NestedScrollView

  2. 这是帮助我创建自定义 [SmartNestedScrollView]的代码示例要点。请注意,您还必须android:fillViewport="true"在此自定义容器上进行设置并将其更新RecyclerView为具有高度wrap_content并从中删除nestedScrollingEnabled标志。

于 2020-04-16T13:44:59.247 回答