Android分页库-位置数据源问题

Android分页库-位置数据源问题,android,android-paging,android-paging-library,Android,Android Paging,Android Paging Library,我可以从服务器获取总记录数,因此我使用positiondatasource进行网络调用。除了一个问题外,一切都很好:即使我不滚动,分页库也会继续从服务器获取所有数据。如何解决这个问题? 使用:androidx.paging:paging运行时ktx:2.1.1 例如: override fun loadInitial(params: LoadInitialParams, callback: LoadInitialCallback<Doctor>) { fetchDataFro

我可以从服务器获取总记录数,因此我使用
positiondatasource
进行网络调用。除了一个问题外,一切都很好:即使我不滚动,分页库也会继续从服务器获取所有数据。如何解决这个问题? 使用:
androidx.paging:paging运行时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()
override fun loadInitial(参数:LoadInitialParams,回调:LoadInitialCallback){
fetchDataFromApi(params.requestedStartPosition,params.pageSize){list,totalCount->
onResult(列表,0,totalCount)
}
}
覆盖有趣的loadRange(参数:LoadRangeParams,回调:LoadRangeCallback){
fetchDataFromApi(params.startPosition,params.loadSize){list,totalCount->
callback.onResult(列表)
}
}
PagedList.Config.Builder()
.setPageSize(14)
.设置预取距离(4)
.setInitialLoadSizeHint(14)
.setEnablePlaceholders(true)
.build()

听起来我花了两天时间研究了一个类似的问题。对我来说,我把我的
RecyclerView
包装在
NestedScrollView
中。 然而,根据这一点,分页库没有内置的支持

当您将recyclerview放入无限滚动父对象中时,它将布局其所有子对象,因为父对象提供无限维

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

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

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

  • 下面是一个帮助我创建自定义[SmartNestedScrollView]的示例。请注意,您还必须在此自定义容器上设置
    android:fillViewport=“true”
    ,并更新
    RecyclerView
    使其高度为
    wrap_content
    ,并从中删除
    nestedScrollingEnabled
    标志