在更改数据集后,粘性标题显示错误的标题或崩溃
作者: cbeyls创建于 2021年7月17日更新于 2024年4月19日
`StickyHeaderLinearLayoutManager` 没有正确处理适配器数据集的更改。 具体来说,它无法正确处理在一组更改通知中包含插入操作后跟着一个或多个删除或移动操作的情况。 这会导致在某些情况下使用错误的视图作为粘性标题,在极少数情况下,还会导致越界错误,因为代码尝试访问适配器范围外的数据。 这个有缺陷的逻辑位于子类 `HeaderPositionsAdapterDataObserver` 中。 只要删除或移动了项目,一切都运行正常。 但是,当调用 `onItemRangeInserted()` 时,就出现了问题:代码尝试立即访问适配器,检查新插入元素中是否有标题,但实际上必须等待其他适配器更新被分发后,才能访问适配器数据,以便正确计算适配器位置。
内容来源: airbnb/epoxy