1

J'ai un RxJava2 Observable qui prend deux listes, calculer le résultat diff pour eux et envoyer ces données à l'adaptateur. Mises à jour d'envoi d'adaptateur sur le thread principal.La répartition DiffResult conduit à 'Inconsistance détectée. Invalid view support adaptateur positionViewHolder 'parfois erreur

Code de l'expédition dans l'adaptateur:

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); 
    } 
} 

J'ai « détecté Incohérence. Erreur d'affichage de l'adaptateur ViewViewHolder invalide parfois sur certains périphériques. Et je ne peux pas comprendre ce qui ne va pas avec mon code. Min SDK 21, SDK cible 26, version RecyclerView est 26.0.0. Je connais la solution de contournement avec l'extension LinearLayoutManager et attraper silencieusement cette erreur, mais c'est une mauvaise solution et je crois qu'il devrait y en avoir une meilleure.

Quelqu'un peut-il vous aider s'il vous plaît?

+0

est 'Inconsistance détectée. L'adaptateur de support de vue invalide positionViewHolder'? – Blackbelt

+0

@Blackbelt, Oui –

+0

Je peux vous dire comment nous le réparons, mais nous ne savons pas pourquoi. C'était beaucoup d'essais et d'erreurs – Blackbelt

Répondre

1

J'ai trouvé une solution à ce problème dans ce answer

Il semble que problème est causé par supportsPredictiveItemAnimations propriété sur les gestionnaires de mise en page. Lorsque je le mets à false, aucun crash ne se produit plus.