3

Ich versuche, eine Fortschrittsbalken, die Teil eines der RecyclerView-Elemente ist, zu aktualisieren. Ich weiß, dass ich tun kann, es auf zwei Arten,Aktualisieren RecyclerView Element ProgressBar ohne NotifyItemChanged (int) auf Adapter

Methode 1: Durch die Positionszeile Auffrischen von notifyItemChanged Aufruf (Position)

Methode 2: Durch die Ansicht Zugriff auf die Methode findViewByPosition() auf LayoutMananger Objekt.

Aber unglücklicherweise funktioniert keiner von ihnen in meinem Fall.

Wenn ich die erste benutze, wird das gesamte Objekt neu gestrichen, die Hintergrundfarbe der Recycleransicht ist grau und das Element ist weiß, so dass der Benutzer die gesamte Elementaktualisierung bemerken kann.

Wenn ich den zweiten versuche, werde ich Probleme beim Scrollen haben.

Ich möchte den Fortschritt genau wie WhatsApp aktualisieren. Danke im Voraus

+0

Ich habe das gleiche Problem:

die Standardelementwechsel Animationen wie so ausschalten. Ich habe versucht, ViewHolder zu speichern und aktualisieren sie auf Fortschrittsaktualisierung, aber es funktioniert nicht. – Vusal

+0

@Vusal, schauen Sie sich meine Antwort unten an, damit wird das Problem behoben, dem Sie gegenüberstehen. – Sakiboy

Antwort

8

Wenn ich die erste benutze, wird das ganze Objekt neu gestrichen, die Hintergrundfarbe der Recyclerview ist grau und das Element ist weiß, so dass der Benutzer das gesamte Element erfrischen kann.

Ich stieß auch auf dieses Problem. Um es zu beheben, müssen Sie die Standardanimationsanimationen deaktivieren. Sobald Sie die Objektwechselanimationen ausschalten, wird Ihr recyclerView-Objekt aktualisiert, ohne zu blinken oder zu springen, so dass Sie problemlos notifyItemChanged(int) verwenden können.

((SimpleItemAnimator) myRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false); 
+1

Ehrfürchtiger Bruder. Meinen Tag gerettet. Danke vielmals. –

+1

@Sakiboy Mine auch :) – Nisarg