2016-03-30 188 views

回答

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

如果您通過編程設置背景顏色。您必須每次設置普通顏色和所選顏色。

RecyclerView正在重複使用他們的視圖。當物品離開屏幕時,它將被重用以提高回收商視圖的性能。

在這種情況下,當一個程序設置背景顏色和項目離開屏幕。它將在新項目中重用,並且背景顏色與項目離開屏幕時的顏色相同。

+0

我不能處理它....ㅠㅠ –