如何在recyclerview适配器中更改所选Cardview的背景

问题描述 投票:0回答:1

[我正在尝试更改卡片视图的背景,如果用户选择它并且一次只想更改一个卡片视图的背景。

就像用户选择其他卡片视图一样,先前选择的卡片视图的背景应变为原始颜色。

到目前为止的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);

    }

}
java android android-recyclerview recycler-adapter
1个回答
0
投票

在类级别声明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);
            }
        });
    }
© www.soinside.com 2019 - 2024. All rights reserved.