2016-07-28 14 views
0

ich eine WebView in meinem RecyclerView haben, wenn ich RecyclerView.notifyDataSetChanged nennen die WebView ein kurzes Blinken haben.WebView in RecyclerView blinkt, wenn notifyDataSetChanged

Ich will keine Änderungen geschehen auf der WebView, wie kann ich das tun?

Ich weiß, dass ich dies mit notifyItemXXX statt notifyDataSetChanged lösen kann. Aber ich brauche notifyDataSetChanged Methode.

+0

Können Sie den Überblick über die webView Index halten und notifyItemRangeChanged verwenden? –

+0

@ AlokOmkar Ich kann die Trace "WebView" behalten, aber die 'notifyDataSetChanged' ist die einfachste Möglichkeit, das Dataset zu aktualisieren. Wenn ich 'notifyItemRangeChanged' verwende, muss ich viel an der Logik meiner App arbeiten. –

+0

Um zu verhindern Effekt zu blinken, lesen Sie in diesem SO Antwort: http://stackoverflow.com/a/32488059/2648035 - lassen Sie mich wissen, ob es –

Antwort

0

Wie das notifyDataSetChanged() offizielle Dokument sagt "LayoutManagers wird gezwungen, alle sichtbaren Ansichten vollständig neu zu binden und neu zu verteilen.". Also ich denke, dass der Flash der Webansicht dadurch verursacht wird. Und Sie können diese "Really OnnotifyDataSetChanged() als letzten Ausweg finden.". Wie Sie erwähnt haben, müssen Sie diese Methode verwenden, also können Sie bitte weitere Informationen geben, damit ich Ihnen helfen kann, eine bessere Lösung zu finden.

+0

hilft Es scheint, dass, wenn ich 'notifyDataSetChanged', die' webView' muss blinken. Ich brauche 'notifyDataSetChanged', weil es die einfachste Möglichkeit ist, das Dataset zu aktualisieren. Mein 'RecyclerView' enthält viele verschiedene Arten von Einträgen, nach einer Antwort vom Server müssen einige gelöscht werden, einige müssen hinzugefügt werden, einige müssen aktualisiert werden und einige tun nichts. Wirklich schwer zu benutzen 'notifyItemXXX'. –

+0

Eine andere Frage, kann ich "notifyItemRangeRemoved" und "notifyItemRangeChanged" gleichzeitig verwenden? –

+1

Ja, Sie können 'notifyItemRangeRemoved' und' notifyItemRangeChanged' gleichzeitig verwenden, aber seien Sie vorsichtig mit dem Bereich. Wie die 'notifyItemRangeRemoved' sagt" Die Elemente, die zuvor bei und nach positionStart + itemCount gefunden wurden, können jetzt bei oldPosition - itemCount gefunden werden. " – Beck