首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PagedList RecyclerView在pagedList失效后跳跃

PagedList RecyclerView在pagedList失效后跳跃
EN

Stack Overflow用户
提问于 2019-06-13 05:32:09
回答 1查看 888关注 0票数 5

设置:

我们使用的是PagedListEpoxyControllerRxPagedListBuilderItemKeyedDataSource和一个运行时Mockgenerator,该运行时Mockgenerator只为例如,为生成的数据索引创建一个用户。user1,user100,user500等。

分页配置是:

代码语言:javascript
复制
val pageSize = 50
val initialLoadSizeHint = 80
val prefetchDistance = 16

预期行为

每当我们向下滚动到Follow/Unfollow时,400项和返回300项,通过单击UI跳转使E 216列表失效。当单击按钮时,PagedList将失效,如下所示:

followers.dataSource.invalidate()

应该用loadInitial()的值调用ItemKeyedDataSource内部的params.key,这样我们就可以得到以前显示的页面以重新显示。例如,如果user300是屏幕上的visible,那么项目requestedInitialKey应该在user221,user280范围内。

问题在哪里?

在失效之前,last item that was fetched in the pagedList的分页库跟踪but does not提供了一种方法,可以在失效之前知道屏幕中的哪个是last item/range that was visible

在使pagedList失效之后,在pagedList失效后调用的第一个回调是loadInitial(params : LoadInitialParams, callback : LoadInitialCallback)params只保存关于pageSize和占位符的信息,以及在失效之前requestedInitialKey作为last item that was fetched的信息,这是非常误导的。为什么,after invalidation a pagedList会将列表中的最后一项作为requestedInitialKey / item in the firstPage而不是the last item that was displayed before invalidation获取?对不起,如果我完全误解了这件事,但并没有真正理解它。

问题:

我希望pagedList能够在新的PagedList中的第一个页面上一个滚动位置(而不是前一个pagedList中的最后一个条目)失效后,开始获取它。

  • 但是,如果PagedList不应该以这种方式工作,那么如何能够知道在失效之前屏幕上以前可见的任何项/索引?
  • 如果我目前也不能做到这一点,那么推荐的实现这个需求的方法是什么?

这个问题可以在这里找到:

要复制:向下滚动足够远(像第60项)并按“刷新”,您将看到列表中的跳转。链接到github问题

EN

回答 1

Stack Overflow用户

发布于 2019-08-04 05:15:50

我们解决这个问题的方法是,UI只从会议室数据库作为一个单一的真实来源来聆听。此设置中不存在此问题。但是当我们使用ItemKeyedDatasource时,这个问题一直持续到现在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56573909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档