Otóż mam pewien problem chodzi o zaznaczanie kart. Pojedyńcza karta zawiera menu. Jedną z opcji jest ustaw kartę jak domyślną,która zaznacza kartę obrabowaniem karty na zielony kolor.
Problem polega na tym że jak zaznaczymy inną kartę to ta karta która była poprzednia karta zaznaczona nie odznacza się
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.CardViewHolder> {
private String nameDecrypt, setDateDecrypt, expirationDateDecrypt, dataString, key;
private List<Card> cardsList = new ArrayList<>();
private ItemClickListener clickListener;
public void setClickListener(ItemClickListener clickListener) {
this.clickListener = clickListener;
}
public CardAdapter(ArrayList<Card> cardsList, String key) {
this.key = key;
this.cardsList = cardsList;
notifyDataSetChanged();
}
@Override
public CardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_card, parent, false);
return new CardViewHolder(view);
}
@Override
public void onBindViewHolder(CardViewHolder holder, final int position) {
final Card card = cardsList.get(position);
holder.nameCard.setText(card.getNameCard());
holder.cardView.setBackgroundResource(R.drawable.bordercardviewwhite);
holder.setCurrentDateText.setText(card.getCreateDate());
holder.setExpirationDateText.setText(card.getExpirationDate());
holder.menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clickListener.onClickMenu(v, position);
}
});
if (card.isSelectedDefault()) {
holder.cardView.setBackgroundResource(R.drawable.bordercardviewgreen);
} else {
holder.cardView.setBackgroundResource(R.drawable.bordercardviewwhite);
}
}
public void setSelected(int position) {
if (cardsList.size() > 1) {
cardsList.get(position).setSelectedDefault(false);
}
cardsList.get(position).setSelectedDefault(true);
notifyDataSetChanged();
}
@Override
public int getItemCount() {
return cardsList.size();
}
}
model Karty
public class Card {
private int Id;
...
private boolean isSelectedDefault;
public boolean isSelectedDefault() {
return isSelectedDefault;
}
public void setSelectedDefault(boolean selectedDefault) {
isSelectedDefault = selectedDefault;
}
}
w aktywności dla każdej karty pojawia się menu
public void onClickMenu(View view, final int position) {
final Card card = cardsList.get(position);
final PopupMenu popupMenu = new PopupMenu(this, view);
MenuInflater inflater = popupMenu.getMenuInflater();
inflater.inflate(R.menu.cardmenu, popupMenu.getMenu());
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.editCard:
break;
case R.id.deleteCard:
break;
case R.id.informationAboutCard:
break;
case R.id.defaultCard:
cardAdapter.setSelected(position);
break;
}
return false;
}
});
popupMenu.show();
}