Usuwanie karty domyślniej oraz ustawienie podanej karty domyślniej na pozycji 0

0

Witam,
Mam listę kart. Pojedyncza karta zawiera opcję : edytuj nazwę, usuń kartę, informacja oraz ustaw jako domyślną. Domyślna karta tworzy się na dwa sposoby

  • Gdy na liście kart nie ma żadnych kart. Po utworzeniu karty przechodzimy na listę kart i automatycznie mam zmienione obramowanie na zielono .

*Gdy chcemy zmienić inną kartę na domyślną.

Problem pojawia się gdy karta domyślna jest usuwana chciałabym ją aby karta domyślna była karta o pozycji 0 .

private static int lastCheckedPos = 0;


@Override
public void onBindViewHolder(CardViewHolder holder, final int position) {
    final Card card = cardsList.get(position);
    holder.nameCard.setText(card.getNumberCard());
    holder.setExpirationDateText.setText(card.getExpirationDate());


       //ustawienie zaznaczenia na wybranej pozycji
       
// karta domyśna 
        if (position == lastCheckedPos) {
            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:

                                   AlertDialog.Builder alert2 = new AlertDialog.Builder(mContext);
                                   LayoutInflater inflater2 = LayoutInflater.from(mContext);
                                   View alertView2 = inflater2.inflate(R.layout.deletecarddialog, null);
                            alert2.setView(alertView2);

                            alert2.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    dialog.dismiss();
                                }
                            }).setPositiveButton(R.string.deleteCardstring, new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    databaseHandler.deleteCard(card);
                                    cardsList.remove(position);
                                    notifyDataSetChanged();

                                    if (cardsList.size() == 0) {
                                        Intent start = new Intent(mContext, MainActivityEmpty.class);
                                        start.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                                        mContext.getApplicationContext().startActivity(start);
                                    }
                                }
                            });
                            alert2.create();
                            alert2.show();

                                    break;
                                case R.id.informationD:

                            }
                            return true;
                        }
                    });
                    popupMenu.show();
                }
            });
        } else {

            holder.cardView.setCardBackgroundColor(Color.WHITE);

            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.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:

                                    int prePos = lastCheckedPos;
                                    lastCheckedPos = position;
                                    notifyItemChanged(prePos);
                                    notifyItemChanged(lastCheckedPos);
                                    mySharepreference.saveNumberCard(mContext, card.getId());
                                    break;
                            }
                            return false;
                        }
                    });
                    popupMenu.show();
                }
            });
        }
0

Twoje posty są napisane w tak niezrozumiały sposób, że ręce opadają.

0
private static int lastCheckedPos = 0;

@Override
public void onBindViewHolder(CardViewHolder holder, final int position) {
    final Card card = cardsList.get(position);
    holder.nameCard.setText(card.getNumberCard());
    holder.setExpirationDateText.setText(card.getExpirationDate());

       //ustawienie zaznaczenia na wybranej pozycji

// gdy mamy pierwszą kartę  ustawiam jako domyślną  pozycja jest równa 0
        if (position == lastCheckedPos) {

            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:

                                   AlertDialog.Builder alert2 = new AlertDialog.Builder(mContext);
                                   LayoutInflater inflater2 = LayoutInflater.from(mContext);
                                   View alertView2 = inflater2.inflate(R.layout.deletecarddialog, null);
                            alert2.setView(alertView2);

                            alert2.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    dialog.dismiss();
                                }
                            }).setPositiveButton(R.string.deleteCardstring, new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    databaseHandler.deleteCard(card);
                                    cardsList.remove(position);
                                    notifyDataSetChanged();

                                    if (cardsList.size() == 0) {
                                        Intent start = new Intent(mContext, MainActivityEmpty.class);
                                        start.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                                        mContext.getApplicationContext().startActivity(start);
                                    }
                                }
                            });
                            alert2.create();
                            alert2.show();

                                    break;
                                case R.id.informationD:

                            }
                            return true;
                        }
                    });
                    popupMenu.show();
                }
            });
        } else {

            holder.cardView.setCardBackgroundColor(Color.WHITE);

            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.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;

// gdy podana karta nie jest domyślna i chcemy ją ustawić jako domyślną  

                                case R.id.defaultCard:

                                    int prePos = lastCheckedPos;
                                    lastCheckedPos = position;
                                    notifyItemChanged(prePos);
                                    notifyItemChanged(lastCheckedPos);
                                    mySharepreference.saveNumberCard(mContext, card.getId());
                                    break;
                            }
                            return false;
                        }
                    });
                    popupMenu.show();
                }
            });
        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1