2016-03-30 9 views
0

私はRecyclerViewでbackgroundColorを設定するために何回も試みました。しかし私はスクロールしようとすると背景が削除されました。私はRecyclerViewでbackgroundColorを修正できます。お願い助けて。RecyclerViewが動作しない理由setBackground関数?

またはForegroundColorを変更したいと思います。

私の問題ビデオ https://www.youtube.com/watch?v=C29qhPb44FE

私はその理由を知らない...あなたがプログラムで背景色を設定した場合

答えて

0

まず、RecyclerViewの動作を理解する必要があります。

セルをスクロールすると、画面から外に出るビューはRECYCLEDになり、後で入力ビューを表示するために再利用されます。したがってRecyclerViewという名前。このようにして、ビューは常にリサイクルされ再利用され、メモリが節約されます。あなたがする必要がどのような

このようなものです:私はそれを扱うことができない

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
    //mList and mSelectedObjects are array lists 
    View yourView = holder.itemView.findViewById(R.id.your_view); 
    Object object = mList.get(position); 
    yourView.setTag(object); 
    yourView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Object object = (Object) v.getTag(); 
      if (mSelectedObjects.contains(object)) { 
       mSelectedObjects.remove(object); 
       v.setBackground(null); 
      } else { 
       mSelectedObjects.add(object); 
       v.setBackgroundColor(Color.GRAY); 
      } 
     } 
    }); 
} 
+0

おかげJagoanネオン。ちょうど私のコードを適応させる方法を知らない。とにかく私は本当にありがとうございます。 –

0

。通常の色と選択した色を毎回設定する必要があります。

RecyclerViewsはビューを再利用しています。アイテムが画面を離れると、再利用されてリサイクルビューのパフォーマンスが向上します。

この場合、プログラムで背景色を設定し、項目が画面から離れるとき。それは新しい項目で再利用され、背景色は項目が画面を離れるときと同じです。

+0

....ㅠㅠ –

関連する問題