Как изменить фон выбранного карты в адаптере переработчика - PullRequest
1 голос
/ 30 апреля 2020

Я пытаюсь изменить фон просмотра карты, если пользователь выбирает его и хочет изменить фон только одного просмотра карты за раз.

Как, если пользователь выбирает любое другое представление карты, фон предыдущего выбранного просмотра карты должен прийти к оригинальному цвету.

Код 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);

    }

}

1 Ответ

1 голос
/ 30 апреля 2020

Объявите переменную 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) {


         if(mClickedItem != -1) {
                  notifyItemChanged(mClickedItem);
             }
                mClickedItem = holder.getAdapterPosition();
                notifyItemChanged(mClickedItem);
            }
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...