Ich habe eine Liste. Jede Karte hat eine Option: edit, deleteCard, information und defaultCard. Wenn die erste Karte hinzugefügt wird, setzt diese Karte die Karte automatisch auf das grüne Feld. Wenn wir mehr Karten haben, können wir die Karte auswählen. Aber ich habe Probleme, wenn ich zum Beispiel die zweite Karte auswähle und als nächstes meine App verlasse. Wenn ich meine App trun und meine Liste gehe, wird die erste Karte ausgewählt, aber ich wähle die zweite Karte aus. Wie man die gewählte Position speichert und als nächstes die ausgewählte Positionskarte liest.Speichern und lesen Sie ausgewählte Kartenposition in RecycleView
diese CardAdapter.class
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.CardViewHolder> {
private int lastCheckedPos = 0;
private Context mContext;
private List<Card> cardsList = new ArrayList<>();
private MySharepreference mySharepreference;
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_card, parent, false);
return new CardViewHolder(view);
}
@Override
public void onBindViewHolder(CardViewHolder holder, final int position) {
final Card card = cardsList.get(position);
databaseHandler = new CardDatabaseHandler(mContext);
mySharepreference = new MySharepreference();
holder.nameCard.setText(card.getNumberCard());
holder.setCurrentDateText.setText(card.getCreateDate());
holder.setExpirationDateText.setText(card.getExpirationDate());
if (lastCheckedPos == position) {
mySharepreference.saveNumberCard(mContext, card.getId());
holder.cardView.setBackgroundResource(R.drawable.bordercardview);
holder.menu.setOnClickListener(new View.OnClickListener() {
Typeface custom_fonts = Typeface.createFromAsset(mContext.getAssets(), "fonts/OpenSans-Regular.ttf");
Typeface custom_fonts_Bold = Typeface.createFromAsset(mContext.getAssets(), "fonts/OpenSans-Bold.ttf");
@Override
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(mContext, v);
popupMenu.inflate(R.menu.cardmenudefault);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.editCardD:
break;
case R.id.deleteCardD:
break;
case R.id.informationD:
break;
}
return false;
}
});
popupMenu.show();
}
});
} else {
holder.cardView.setBackgroundResource(R.drawable.bordercardviewwhite);
holder.menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(mContext, v);
popupMenu.inflate(R.menu.cardmenu);
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:
lastCheckedPos = position;
notifyDataSetChanged();
break;
}
return false;
}
});
popupMenu.show();
}
});
}
}
@Override
public int getItemCount() {
return cardsList.size();
}
}
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/17439008) –
Der erforderliche Code in meiner Antwort hinzugefügt – user320676