RecyclerView zeigt keine Ansichten an, wenn die Anzahl der Ansichten klein ist

8

Ich habe in Recycler View mit einem seltsamen Verhalten zu tun gehabt, wenn die Anzahl der Ansichten im Adapter klein ist, in meinem Fall mit Größe 5 werden die Ansichten nicht wiederverwendet und onBindViewHolder wird nicht aufgerufen, wenn die Ansicht zurückgescrollt wird zu screenen. Wenn ich zum Beispiel die Größe auf 10 Ansichten vergrößere, beginnt das Recycling und onBindViewHolder wird jedes Mal aufgerufen, wenn eine Ansicht auf den Bildschirm kommt.

XML

%Vor%

Initialisierung der Recycler-Ansicht

%Vor%

Der Adapter

%Vor%

Auf dem Bildschirm gibt es nur 3 sichtbare Ansichten, mit einer Größe von 5, wenn ich nach unten scrolle, kann ich sehen, dass die createViewHolder und bindViewHolder für Position 4 und 5 aufgerufen wird, aber wenn ich nach oben blättern werden beim Verlassen des Bildschirms nicht wiederverwendet. Ich kann das bestätigen, weil durch

überschrieben %Vor%

Es wird keine Nachricht protokolliert. Wenn die Anzahl der Aufrufe jedoch beispielsweise mit der Größe 10 erhöht wird, funktioniert alles einwandfrei, die Ansichten werden wiederverwendet und für jede Position wird onBindViewHolder aufgerufen.

Ist das normales Verhalten? Wenn ich den Status einer Objektansicht speichern kann, zum Beispiel den aktivierten Zustand, habe ich die aktive Position in einer Variablen gespeichert und dann diese Zeile verwendet, um die Ansicht zu aktivieren, wenn sie mit der Bind-Methode

auf den Bildschirm gelangt %Vor%     
Sergio Serra 03.09.2015, 11:12
quelle

1 Antwort

15

Es ist normales Verhalten, aber Sie können es mit:

optimieren %Vor%

Über den zweiten Teil der Frage - Sie haben Recht! Speichern Sie die "aktivierte" Position als Variable in Ihrem Adapter. In onBindViewHolder () tun Sie etwas wie:

%Vor%     
JoeyJubb 03.09.2015, 11:25
quelle

Tags und Links