MHB Using an MVC to delete an element from an arrayList

  • Thread starter Thread starter Smiles1
  • Start date Start date
  • Tags Tags
    Delete Element
AI Thread Summary
The discussion revolves around a coding issue related to deleting a flashcard from an ArrayList in Java. The primary problem is that the deletion method always removes the flashcard at position 0, regardless of the intended target. The user has implemented a method, `getCurrentIndex`, to find the correct index based on the display text of the flashcard, but it fails to update the position correctly. The `deleteFlashCard` method attempts to remove the flashcard using the index returned by `getCurrentIndex`, but the logic for updating the index after deletion is flawed. The user has also expressed frustration after trying to troubleshoot the issue through debugging and searching for similar problems online. There are concerns about whether the issue lies within the button listeners in the controller, particularly regarding how the current flashcard is set before deletion. Overall, the key points of the discussion highlight the challenges in managing the index and ensuring the correct flashcard is targeted for deletion from the ArrayList.
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());
    }

}
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I had a Microsoft Technical interview this past Friday, the question I was asked was this : How do you find the middle value for a dataset that is too big to fit in RAM? I was not able to figure this out during the interview, but I have been look in this all weekend and I read something online that said it can be done at O(N) using something called the counting sort histogram algorithm ( I did not learn that in my advanced data structures and algorithms class). I have watched some youtube...

Similar threads

Back
Top