我编写了以下代码,以更改recyclerview click中所选项目的背景:
@Override
public void onBindViewHolder(final ProductAdapter.CardViewHolder cardViewHolder, final int position) {
final Product product = mProduct.get(position);
cardViewHolder.pName.setText(product.getName());
cardViewHolder.cardProduct.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
product.setSelected(!product.isSelected());
cardViewHolder.view.setBackgroundColor(product.isSelected() ? getContext().getResources().getColor(R.color.blue) : Color.red);
}
});
}
现在这可以了。当我单击“回收站视图”项目时,它会更改背景颜色,但是我想当我单击“回收站视图”中的任何特定项目时,必须取消选择所有其他项目并将其背景更改为红色。
我只想提供唱歌选择选项。
我该怎么做?
答案 0 :(得分:2)
使用变量来保留所选元素的索引。 例如:
rgb(35, 35, 35) == #232323
答案 1 :(得分:1)
尝试一下:
@Override
public void onBindViewHolder(ProductAdapter.CardViewHolder cardViewHolder, final int position) {
Product product = mProduct.get(position);
cardViewHolder.pName.setText(product.getName());
if (product.isSelected()) {
ardViewHolder.view.setBackgroundColor(context.getResources().getColor(R.color.blue));
} else {
ardViewHolder.view.setBackgroundColor(context.getResources().getColor(R.color.Red));
}
cardViewHolder.cardProduct.setTag(position);
cardViewHolder.cardProduct.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int pos = (int) view.getTag();
for (int i = 0; i < mProduct.size; i++) {
Product product = mProduct.get(i);
if (i != pos) {
product.setSelcted(false);
} else {
product.setSelcted(true);
}
}
notifyDataSetChanged();
}
});
}