我嘗試了很多次在RecyclerView上設置backgroundColor。但我嘗試滾動然後背景被刪除。所以我可以在RecyclerView中修復backgroundColor。請幫幫我。爲什麼RecyclerView不工作setBackground函數?
或我想更改ForegroundColor。
我的問題視頻 https://www.youtube.com/watch?v=C29qhPb44FE
我不知道原因......
我嘗試了很多次在RecyclerView上設置backgroundColor。但我嘗試滾動然後背景被刪除。所以我可以在RecyclerView中修復backgroundColor。請幫幫我。爲什麼RecyclerView不工作setBackground函數?
或我想更改ForegroundColor。
我的問題視頻 https://www.youtube.com/watch?v=C29qhPb44FE
我不知道原因......
您需要先了解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);
}
}
});
}
如果您通過編程設置背景顏色。您必須每次設置普通顏色和所選顏色。
RecyclerView正在重複使用他們的視圖。當物品離開屏幕時,它將被重用以提高回收商視圖的性能。
在這種情況下,當一個程序設置背景顏色和項目離開屏幕。它將在新項目中重用,並且背景顏色與項目離開屏幕時的顏色相同。
我不能處理它....ㅠㅠ –
感謝Jagoan霓虹燈。正是我不知道如何適應我的代碼。無論如何,我真的很感謝你。 –