Witam,
teraz pracuję nad funkcjonalnością zmiany nazwy karty. Problem jest taki ze klikam na opcję zmień nazwę karty klikam zapisz . Wyświetla mi się numer pozycji -1. Jeżeli mam więcej kart w liście za każdym razem pojawia nam się to samo. Mógłby mi ktoś wytłumaczyć dlaczego tak się dzieje ?
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.CardViewHolder> {
boolean isError = false;
private Card card;
private Context mContext;
private ArrayList<Card> cardslist = new ArrayList<Card>();
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);
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) {
Typeface custom_fonts = Typeface.createFromAsset(mContext.getAssets(), "fonts/OpenSans-Regular.ttf");
Typeface custom_fonts_Bold = Typeface.createFromAsset(mContext.getAssets(), "fonts/OpenSans-Bold.ttf");
switch (item.getItemId()) {
case R.id.editCard:
// dialog który powoduje edycje karty
final AlertDialog.Builder alert = new AlertDialog.Builder(mContext);
final LayoutInflater inflater = LayoutInflater.from(mContext);
final View alterView = inflater.inflate(R.layout.editcarddialog, null);
alert.setView(alterView);
TextView editTextView = (TextView) alterView.findViewById(R.id.editCardText);
editTextView.setTypeface(custom_fonts);
final EditText nameCardEditText = (EditText) alterView.findViewById(R.id.nameCardEditText);
nameCardEditText.setTypeface(custom_fonts);
nameCardEditText.setText(card.getNameCard());
alert.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alert.setPositiveButton(R.string.save, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String oldNameCardString = card.getNameCard();
final String newNameCardString = nameCardEditText.getText().toString();
int indexOf = cardslist.indexOf(oldNameCardString);
Toast.makeText(mContext, "Numer Poazycji " + indexOf, Toast.LENGTH_SHORT).show();
TextView indexOfTextView = (TextView) alterView.findViewById(R.id.indexOf);
indexOfTextView.setText("Pozycja na karcie "+indexOf);
}
});
alert.create();
alert.show();
break;