1

RxJava2 Observableに2つのリストをとり、それらのdiff結果を計算してこのデータをアダプターに送信します。アダプターはメインスレッドで更新をディスパッチします。アダプタに派遣のDiffResultディスパッチが「不一致が検出されました。無効なビューホルダーアダプターpositionViewHolder 'error sometimes

コード:

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 'エラーが発生することがあります。私のコードで何が間違っているのか分かりません。 最小SDK 21、対象SDK 26、RecyclerViewのバージョンは26.0.0です。私はLinearLayoutManagerを拡張し、このエラーを静かにキャッチすることで回避策を知っていますが、これは悪い解決策です。

誰でも助けてください。

+0

は「不一致が検出されました。ビューホルダーアダプターpositionViewHolder'が無効ですか? – Blackbelt

+0

@Blackbelt、Yes –

+0

私はそれを修正する方法を教えてもらえますが、その理由を確かめることはできません。それは多くの試行錯誤でした – Blackbelt

答えて

1

私は問題はレイアウトマネージャ上supportsPredictiveItemAnimationsプロパティによって引き起こされているようです。このanswer

にこの問題の解決策を見つけました。私はそれを偽に設定しても、クラッシュはもう起こりません。

関連する問題