2017-10-04 51 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時,不再發生崩潰。

相關問題