2017-10-04 38 views
1

我有一个RxJava2 Observable,它需要两个列表,计算它们的差异结果并将此数据发送到适配器。主线程上的适配器调度更新。DiffResult调度导致“检测到不一致”。无效的视图持有人适配器positionViewHolder'错误有时

适配器调度的代码:

public void dispatchStreams(List<StreamV3> streams, @Nullable DiffUtil.DiffResult diffResult) { 

    if (streams == null) return; 

    streamsList.clear(); 
    streamsList.addAll(streams); 

    if (diffResult != null) { 
     diffResult.dispatchUpdatesTo(this); 
    } 
} 

我有“不一致检测。无效的视图持有人适配器positionViewHolder有时在某些设备上的错误。我无法弄清楚我的代码有什么问题。 Min SDK 21,Target SDK 26,RecyclerView版本是26.0.0。我知道扩展LinearLayoutManager的解决方法,并默默地捕获这个错误,但这是不好的解决方案,我相信这里应该是更好的解决方案。

任何人都可以提供任何帮助吗?

+0

是检测到不一致。无效的视图持有人适配器positionViewHolder'? – Blackbelt

+0

@Blackbelt,是 –

+0

我可以告诉你我们如何解决这个问题,但我们不知道为什么。这是很多的试验和错误 – Blackbelt

回答

1

我发现这个问题的解决方案在此answer

看来,问题是由supportsPredictiveItemAnimations财产上的布局管理器引起的。当我将它设置为false时,不再发生崩溃。

相关问题