如何解决在分页 3
有一种情况,我必须将 recyclerview 滚动到最后一个位置。问题从我使用 Paging 3 的地方开始。我不知道每次向适配器提交数据时的正确方法是什么。顺便说一句,我不会提交一次数据,但是例如每次用户向后端提交新评论时,我都必须从服务器获取新列表并提交。
这是我尝试过的。这就是我观察数据的方式:
private fun observeComments() {
exploreViewModel.commentsLiveData.observe(viewLifecycleOwner) { comments ->
commentsAdapter.submitData(viewLifecycleOwner.lifecycle,comments)
}
}
这就是我尝试将 recyclreview 滚动到最后一项的方式:
commentsAdapter.addLoadStateListener { loadStates ->
if(loadStates.refresh.endOfPaginationReached){
if(commentsAdapter.itemCount>1)
binding.rvComments.smoothScrollToPosition(commentsAdapter.itemCount-1)
}
}
我也将 app:stackFromEnd="true"
设置为 recyclerview 但这没有用。每当我提交新评论并获得列表时,recyclerview 会滚动到中间,我认为它会滚动到第一页结尾。但我希望它滚动到列表的末尾。
任何帮助或建议将不胜感激。
解决方法
您可以实现PagingSource.getRefreshKey()
来控制失效后传递给.load()
的密钥,并在initialKey
中设置Pager()
来控制传递给{{1}的初始调用的密钥}.
由于您的列表已分页,滚动到最后不起作用,因为您需要按顺序加载所有页面,直到到达所需位置,因此更好的策略是从您希望用户滚动的位置开始加载位置开始,然后让分页在页面向上滚动时预先添加。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。