Wenn Sie die Farbe eines einzelnen Zeichensatzes in RecyclerView ändern, werden alle Zeichen geändert

7

Ich habe gerade versucht, die Farbe meines Zeichens innerhalb meiner Zeile abhängig von einem Wert zu ändern, aber anstelle eines Zeichens änderte der Adapter alle von ihnen.

Hier ist mein Adapter:

%Vor%

Weiß jemand, was zu tun ist? Danke für Ihre Hilfe !!!

    
Tom Kuschka 11.08.2015, 14:26
quelle

2 Antworten

18

Es ist eine Art Caching. Aus den Android-Dokumenten :

  

Wenn Sie zwei Drawable-Objekte aus derselben Image-Ressource instanziieren und dann eine Eigenschaft (z. B. das Alpha) für eine der Drawables ändern, wirkt sich dies auch auf die andere aus. Wenn Sie also mit mehreren Instanzen einer Bildressource arbeiten, sollten Sie, anstatt die Drawable direkt zu transformieren, eine Tween-Animation ausführen.

Drawable.mutate () sollte nach der Erstellung das Problem beheben .

  

Ein veränderbares Zeichen wird garantiert seinen Zustand nicht mit anderen Zeichen teilen. Dies ist besonders nützlich, wenn Sie Eigenschaften von Zeichenelementen ändern müssen, die von Ressourcen geladen werden. Standardmäßig teilen alle Zeichenauszugsinstanzen, die von derselben Ressource geladen werden, einen gemeinsamen Status. Wenn Sie den Status einer Instanz ändern, erhalten alle anderen Instanzen die gleiche Änderung.

In etwa so:

%Vor%     
Sergey Glotov 11.08.2015, 14:50
quelle
0

Danke an Sergey, der mich zur Lösung geführt hat. Ich teile, was ich in OnBindViewHolder-Methode gemacht habe.

%Vor%     
Jorge Casariego 11.10.2016 15:59
quelle