[我正在尝试更改卡片视图的背景,如果用户选择它并且一次只想更改一个卡片视图的背景。
就像用户选择其他卡片视图一样,先前选择的卡片视图的背景应变为原始颜色。
到目前为止的RecyclerviewAdapter代码。
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
final List_data1 ld = list_data.get(position);
holder.servicetype.setText(ld.getTitle());
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isselected = true;
if (isselected == true) {
holder.cardView.setCardBackgroundColor(Color.RED);
} else {
holder.cardView.setCardBackgroundColor(Color.WHITE);
}
Intent intent = new Intent("custom-message");
intent.putExtra("servicename", ld.getTitle());
LocalBroadcastManager.getInstance(v.getContext()).sendBroadcast(intent);
}
});
}
@Override
public int getItemCount() {
return list_data.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private CardView cardView;
private TextView servicetype;
public ViewHolder(View itemView) {
super(itemView);
cardView = itemView.findViewById(R.id.cardview);
servicetype = itemView.findViewById(R.id.servicetype);
}
}
在类级别声明mClickedItem变量,如-
private int mClickedItem = -1;
并在onBindViewHolder()上进行处理
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
if (mClickedItem != -1) {
if (mClickedItem == position) {
holder.cardView.setCardBackgroundColor(Color.RED);
} else {
holder.cardView.setCardBackgroundColor(Color.WHITE);
}
}
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mClickedItem = holder.getAdapterPosition();
notifyItemChanged(mClickedItem);
}
});
}