Ich benutze eine RecyclerView, um eine Liste von TextViews anzuzeigen. Ich möchte, dass die TextViews in den Positionen 0,1,2,3 und 4 ein farbiges Quadrat haben. Dies ist mein Code:RecyclerView-Adapter Methode holder.getAdapterPosition() bekomme falsche Werte nach dem Scrollen
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.mItem = mValues.get(position);
if(holder.getAdapterPosition()==0) {
holder.lytColor.setBackgroundColor(Color.rgb(255, 201, 8));
} else if(holder.getAdapterPosition()==1) {
holder.lytColor.setBackgroundColor(Color.rgb(242, 157, 32));
}else if(holder.getAdapterPosition()==2) {
holder.lytColor.setBackgroundColor(Color.rgb(177, 134, 66));
}else if(holder.getAdapterPosition()==3) {
holder.lytColor.setBackgroundColor(Color.rgb(123, 102, 72));
}else if(holder.getAdapterPosition()==4){
holder.lytColor.setBackgroundColor(Color.rgb(77,72,69));
}
}
Es funktioniert:
Das Problem ist, dass, wenn ich andere Textviews nach unten scrollen auch Farben haben:
Ich habe verwendet Log.e ("test", getAdapterPosition()), um die Position zu sehen, und es zeigte den erwarteten Wert, die Position des Elements in der ArrayList.
In meinem Handy folgt das nächste Muster: 5 farbigen, 10 farblos, 5 farbig, 10 farblos ...
ich die App in anderen Mobiltelefonen mit einem größeren Bildschirm und die Muster ändern, getestet habe 5 farbig, 13 farblos, 5 farbig, 13 farblos ...
Also ich nehme an, dass die Anzahl der Elemente, die auf dem Bildschirm angezeigt werden kann, mit dem Problem zusammenhängt.
PS: Ich habe versucht, bereits Positionsparameter mit
Irgendwelche Vorschläge?
haben Sie versucht, 'getLayoutPosition()' zu verwenden? –
versuchen Sie diese GetOldPosition() –
Danke, aber diese Methoden haben nicht funktioniert – ChocoboGordo