Using an MVC to delete an element from an arrayList

  • Context: MHB 
  • Thread starter Thread starter Smiles1
  • Start date Start date
  • Tags Tags
    Delete Element
Click For Summary
SUMMARY

The forum discussion focuses on a Java implementation issue regarding the deletion of a flashcard from an ArrayList within an MVC architecture. The user reports that the deletion method always removes the flashcard at position 0, regardless of the intended target. Key code snippets reveal that the method getCurrentIndex(String displayText) is not functioning as expected, leading to incorrect index retrieval. The discussion highlights the need for debugging the index management logic in the FlashCardList class.

PREREQUISITES
  • Java programming fundamentals
  • Understanding of MVC architecture
  • Familiarity with ArrayList operations
  • Basic debugging techniques in Java
NEXT STEPS
  • Review Java ArrayList documentation for proper index management
  • Learn about Java debugging techniques to trace variable values
  • Investigate the use of ArrayList.remove(int index) method and its implications
  • Explore best practices for managing state in MVC applications
USEFUL FOR

Java developers, software engineers working with MVC frameworks, and anyone troubleshooting ArrayList manipulation issues in Java applications.

Smiles1
Messages
7
Reaction score
0
PLEASE HELP! How can I delete a flashcard from my ArrayList? My position never updates and it always deletes position 0. Please let me know if you need more code to examine. I've tried trouble shooting this to find the problem but I can't figure out how to fix it. It's bugging me so badly and I really want to understand it.

I've tried looking through stackOverflow for similar problems and have tried stepping through with the debugger.

Inside my flashCard Model
Code:
  public int getCurrentIndex(String displayText) {
        
        int position = 0;
        for (int i = 0; i < flashCards.size() - 1; i++) {
//Trying to see what's going on and why things aren't matching up
            System.out.println("Display Text:" + displayText);
            System.out.println(flashCards.get(i).getTextColor());
            System.out.println(position);
            if (flashCards.get(i).getTextColor().equals(displayText)) {
                
                position = i;
                break;
            }
            System.out.println(position);
        } 
       return position;
    }
    
//Does not work right, always deletes position zero.
    public void deleteFlashCard(String displayText) {
        this.flashCards.remove(getCurrentIndex(displayText));
        index = index--;
//Looking to see what was deleted
        System.out.println(this.flashCards.toString());
        
    }

}

Inside my flashcard controller

Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

public class FlashCardController {

    private FlashCardListUI flashCardListUI;
    private FlashCardList flashCardList;

    FlashCardController(FlashCardListUI flashCardListUI, FlashCardList flashCardList) {

        this.flashCardList = new FlashCardList();
        this.flashCardListUI = new FlashCardListUI();
        
        class NextFlashCardButtonListener implements ActionListener {

            public void actionPerformed(ActionEvent ae) {
                flashCardListUI.setCurrentFlashCard(flashCardList.getNextFlashCard().toString());
      
            }
        }
        class AddButtonListener implements ActionListener {

            public void actionPerformed(ActionEvent e) {
                flashCardList.putFlashCard(flashCardListUI.getCurrentFlashCard());

            }
        }

        class BackButtonListener implements ActionListener {
//Is the problem here? If so, Why?
            public void actionPerformed(ActionEvent e) {
                flashCardListUI.setCurrentFlashCard(flashCardList.getPreviousFlashCard().toString());
                //flashCardList.putFlashCard(flashCardListUI.getCurrentFlashCard());

            }
        }
        
         class DeleteButtonListener implements ActionListener {

            public void actionPerformed(ActionEvent e) {

                flashCardList.deleteFlashCard(flashCardListUI.getCurrentFlashCard()); 
         
            }
        }
         
        flashCardListUI.nextFlashCardButtonListener(new NextFlashCardButtonListener());
        flashCardListUI.addFlashCardButtonListener(new AddButtonListener());
        flashCardListUI.backButtonListener(new BackButtonListener());
        flashCardListUI.deleteButtonListener(new DeleteButtonListener());
      
    }

}

Thank you for any hints or help! They are greatly appreciated!
 
Technology news on Phys.org
Still need help!
This does not work either. :-(
Code:
public class FlashCardList {

    private ArrayList<FlashCard> flashCards;
    private FlashCard flashCard;
    private int index;
    private int position = -1;

    FlashCardList() {
        this.flashCards = new ArrayList();
        flashCards.add(new FlashCard("test"));
        index = 0;
     
    }

    public void putFlashCard(String textColor) {
        flashCard = new FlashCard(textColor);
        flashCards.add(flashCard);
        index = index++;
    }

    public FlashCard getFlashCard() {
        return flashCards.get(index);
    }

    public FlashCard getNextFlashCard() {
        index = index++;
        return flashCards.get(index);
    }

    public FlashCard getPreviousFlashCard() {
        index = index--;
        return flashCards.get(index);
    }

    public int getCurrentIndex(String displayText) {
        //return flashCards.indexOf(index);

        for (int i = 0; i < flashCards.size(); i++) {
            System.out.println("Display Text:" + displayText);
            System.out.println(flashCards.get(i).getTextColor());

            if (flashCards.get(i).getTextColor().equals(displayText)) {

                position = i;
                System.out.println(position);
                break;

            }

        }
        return position;
    }

//Does not work right
    public void deleteFlashCard() {
        //this.flashCards.remove(flashCards.get(getCurrentIndex(displayText)));
        this.flashCards.remove(index);
        index = 0;
        System.out.println("DELETE");
        System.out.println(flashCards);
        //System.out.println(this.flashCards.toString());
    }

}
 

Similar threads

  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 14 ·
Replies
14
Views
6K
  • · Replies 2 ·
Replies
2
Views
3K
Replies
2
Views
2K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 9 ·
Replies
9
Views
4K
  • · Replies 4 ·
Replies
4
Views
5K
  • · Replies 6 ·
Replies
6
Views
3K
  • · Replies 3 ·
Replies
3
Views
3K
Replies
1
Views
3K