我有清单卡。在我的菜单中单击时,显示三个选项。第二个选项将卡设置为默认卡。此卡将边框卡设置为绿色。单击另一张卡时,选择该卡边框为绿色。如果选择另一张卡作为默认卡,取消选择以前的默认卡并更改默认颜色,该如何制作。

android - 选定的单张卡片查看并更改颜色-LMLPHP

这是我的适配器与表演
        公共类CardAdapter扩展了RecyclerView.Adapter {

        boolean isSelected;
        private Card card;
        private Context mContext;
        private ArrayList<Card> cardslist = new ArrayList<>();
        private MySharedPreference mySharedPreference;

        public CardAdapter(Context mContext, ArrayList<Card> cardslist) {
            this.mContext = mContext;
            this.cardslist = cardslist;
            notifyDataSetChanged();

        }


        @Override
        public CardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_cardview, parent, false);
            return new CardViewHolder(view);
        }

        @Override
        public void onBindViewHolder(final CardViewHolder holder, final int position) {
            card = cardslist.get(position);
            mySharedPreference = new MySharedPreference();
            holder.nameCard.setText(card.getNameCard());
            holder.setDate.setText(card.getCreateDate());
            holder.expirationDate.setText(card.getExpirationDate());
            holder.menu.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    final PopupMenu popupMenu = new PopupMenu(mContext, holder.menu);
                    popupMenu.inflate(R.menu.cardmenu);
                    popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                        @Override
                        public boolean onMenuItemClick(MenuItem item) {

 case R.id.defaultCard:
//this option set card as defult
                                holder.cardView.setBackgroundResource(R.drawable.style_card_shodow);
                                Toast toast2 = Toast.makeText(mContext, "Podana karta została ustawiona jako domyślna.", Toast.LENGTH_LONG);
                                LinearLayout layout = (LinearLayout) toast2.getView();
                                if (layout.getChildCount() > 0) {
                                    TextView tv = (TextView) layout.getChildAt(0);
                                    tv.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
                                }
                                toast2.show();

                                break;

最佳答案

您可以在卡模型中放置一个额外的布尔变量。并可以像这样在onbindViewHolder中添加检查:

*if(card.booleanIsTrue())
{
put green color
}
else
{
put other color
}*

you can set it to true or false onClick like this:

*if(card.booleanIsTrue())
{
put other color
card.setbooleanFalse;
}
else
{
put green color
card.setbooleanTrue;
}
notifyDataSetChanged();*

07-26 02:32