RecyclerViewを使用してTextViewのリストを表示しています。私は位置0,1,2,3と4のTextViewsに色のついた四角形をつけたい。RecyclerViewアダプタのメソッドholder.getAdapterPosition()はスクロール後に間違った値を取得します
@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));
}
}
それは動作します:これは私のコードで私がしました
:
問題は、私は他のTextViewsを下にスクロールするときにも色を持っているということですLog.e( "test"、getAdapterPosition())を使用して位置を確認し、期待値、つまりArrayList内の項目の位置を示しました。私の携帯電話で
それが次のパターンは以下:無色5色、10無色、5色、10 ...
私は大きな画面とパターンの変更と他の携帯電話にアプリをテストしてみた、5無色13色、無色13色、無色13色...
だから、画面に表示できる項目の数は問題に関係していると思います。
PS:既に位置パラメータを使用してみました。
お勧めはありますか?
あなたは 'getLayoutPosition()'を使ってみましたか? –
これを試してくださいgetOldPosition() –
ありがとうございますが、それらのメソッドは動作しませんでした – ChocoboGordo