RecyclerView:notify *和scrollToPostion之间的竞争条件?

时间:2016-10-05 08:22:35

标签: android android-layout android-recyclerview

notify*本身的RecyclerView.AdapterscrollToPosition(和smoothScrollToPositionRecyclerView方法之间是否存在竞争条件?如果是这样,我如何强制scrollnotify应用后严格执行?

更详细一点:我有一个带有适配器的RecyclerView,该适配器经常使用新项目进行更新(可能与以前的项目重叠也可能不重叠)。此外,每当我设置新项目时,我也想将滚动位置设置为特定项目。为此,我首先更新Adapter内的项目,然后滚动RecyclerView

然而,在此过程之后,滚动位置通常会出错。此外,如果我在不更改数据的情况下发出另一个smoothScrollToPosition命令,则滚动很奇怪:它有时会走错方向等。在第二次滚动之后,位置总是正确的。因此,第一次看起来出现了问题,RecyclerView会在第二次滚动时捕获并纠正错误。

此外,当我使用notifyDataSetChanged时使用DiffUtil时,错误会略有不同。

现在我在this response by Yigit中读到notify*基本上是异步的,所以我想它们和后续scrollToPosition之间可能存在竞争条件 - 这是正确的吗?

最后我该怎么做才能建立一个严格的排序,这样只有在通过notify触发的所有ViewHolder更新完成后才会调用滚动?

0 个答案:

没有答案
相关问题