【发布时间】:2019-01-01 03:32:41
【问题描述】:
我希望我的带有 LinearLayoutManager 的 RecyclerView 在适配器更新后显示特定项目的滚动位置。 (不是第一个/最后一个位置) 表示第一次(重新)布局,这个给定的位置应该在可见区域。 它不应将位置 0 放在顶部并随后滚动到目标位置。
我的适配器从 itemCount=0 开始,在线程中加载其数据并稍后通知其实际计数。但是开始位置必须在 count 还是 0 的时候就已经设置好了!
到目前为止,我使用了某种 post Runnable 包含scrollToPosition 但这有副作用(从第一个 pos 开始并立即跳转到目标位置(0 -> 目标)并且似乎不适用于 DiffUtil(0 -> 目标 -> 0))
编辑: 澄清:我需要layoutManager.setStackFromEnd(true); 的替代品,例如setStackFrom(position)。 ScrollToPosition 不起作用,如果我在 itemCount 仍然为 0 时调用它,那么它会被忽略。如果我在通知 itemCount 现在 > 0 时调用它,它将从 0 开始布局并在目标位置之后快速跳转。如果我使用 DiffUtil.DiffResult.dispatchUpdatesTo(adapter)`,它会完全失败。 (从 0 开始显示,然后滚动到目标位置,然后再次回到位置 0)
【问题讨论】:
标签: android android-recyclerview position