我有清单卡。在我的菜单中单击时,显示三个选项。第二个选项将卡设置为默认卡。此卡将边框卡设置为绿色。单击另一张卡时,选择该卡边框为绿色。如果选择另一张卡作为默认卡,取消选择以前的默认卡并更改默认颜色,该如何制作。
这是我的适配器与表演
公共类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();*