Versão atual:

Problema SUPER irritante com ArrayList

Olá pessoal! Estou debugando meu código há dois dias e não consigo entender o que está acontecendo.Eu tenho uma lista de exercícios armazenada dentro de uma lista de dias, exemplo, dia 1 - ex a,b e c dia 2 ex d,e e f. Quando eu insiro dois exercícios para o primeiro dia fica tudo certo, porém quando vou inserir um novo exercício para o próximo dia o item que está no ArrayList na posição 0 é substituído pelo que acabou de ser digitado. https://www.filepicker.io/api/file/Irerddy4QcaBUWMQKBBv

ação do botão que insere o exercício

 private void btInserirErgActionPerformed(java.awt.event.ActionEvent evt) {                                             
          d.setNum(cbTreinoDia.getSelectedIndex() + 1);//dia do treino
                ex = new ErgometriaEx();
                ex = (ErgometriaEx) cbTreinoErgometria.getSelectedItem();//obter o exercício ergométrico
                ex.setErgNome(ex.getErgNome());//setar o nome do exercício
                ex.setErgId(ex.getErgId());
                ex.setErgTempo(tfTreinoErgometriaTempo.getText());//setar o tempo do exercício
                ex.setErgObsProf(taErgObserva.getText());//setar a obs sobre o exercício
                ergom.add(ex);//ergon (arraylist do tipo exerciciosergométricos) adiciona a lista de ex erg
                  ex.listar_ergs(ergom, listaAwt);
                  op = JOptionPane.showConfirmDialog(null, "Cadastrar mais Exercícios ergométricos para o aluno:" + tr.getAluno().getAlunoNome() + " ?", "", JOptionPane.YES_NO_OPTION);
                if (op == JOptionPane.YES_OPTION) {
                    cbTreinoErgometria.setEnabled(true);
                    tfTreinoErgometriaTempo.setEnabled(true);
                    cbTreinoErgometria.setSelectedIndex(0);
                    tfTreinoErgometriaTempo.setText("");
                    taErgObserva.setText("");

                } else {
                    op = JOptionPane.NO_OPTION;
                    cbTreinoErgometria.setEnabled(false);
                    tfTreinoErgometriaTempo.setEnabled(false);
                    cbTreinoErgometria.setSelectedIndex(0);
                    taErgObserva.setEnabled(false);
                    listaAwt.setEnabled(false);

                }
    }

Ação do botão que insere o ArrayList de exercícios no Array de Dia

 private void btFinalizaTreinoDiaActionPerformed(java.awt.event.ActionEvent evt) {                                                    
        i++;
        d.setExercicio(arrayExer2);//seta a lista de exercícios
        d.setErgometriaEx(ergom);//seta a lista de exercícios ergométricos
        arrayDia.add(d);
        d = new Dia();
        ergom = new ArrayList<ErgometriaEx>();
        arrayExer2 = new ArrayList<Exercicio>();
        cbTreinoDia.setSelectedIndex(i);//altera o combo do dia

        limparItensDia();


    }

Como podem ver eu tenho um outroo ArrayList d.setExercicio(arrayExer2);//seta a lista de exercícios mas nesse esse problema não ocorre.

Minha classe Dia

import java.util.List;


public class Dia {
private int num;

public java.util.List<Exercicio> exercicio;
public java.util.List<ErgometriaEx> ergometriaEx;

    public List<ErgometriaEx> getErgometriaEx() {
        return ergometriaEx;
    }

    public void setErgometriaEx(List<ErgometriaEx> ergometriaEx) {
        this.ergometriaEx = ergometriaEx;
    }

    public List<Exercicio> getExercicio() {
        return exercicio;
    }

    public void setExercicio(List<Exercicio> exercicio) {
        this.exercicio = exercicio;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

}

Minha classe de exercícios ergométricos

public class ErgometriaEx {

    /** @pdOid bdce090a-9733-4edd-96ca-dbe5f9e29ac7 */
    private int ergId;
    /** @pdOid 70c0a935-347e-4a15-a53e-3af9119c05a1 */
    private String ergNome;
    /** @pdOid 69c8c4d7-2e30-4ab0-9c73-aa88d677058f */
    private String ergTipo;
    /** @pdOid 3fee52eb-eb70-4bcd-b3d3-348ef5d1114f */
    private String ergTempo;
    /** @pdOid ce94b94c-7086-4d55-89f5-da111254d314 */
    private String ergObsTempo;
    /** @pdOid 013204dd-5a3d-4737-b482-88497a28146a */
    private String ergObsProf;

    /** @pdOid 703137a3-71ca-426d-ac25-e472388e46d8 */
    public int getErgId() {
        return ergId;
    }

    /** @param newErgId
     * @pdOid e9e30e76-9f21-44e8-b4c8-89cc2845cfcb */
    public void setErgId(int newErgId) {
        ergId = newErgId;
    }

    /** @pdOid 479e48b9-80e9-4aea-aa07-c418d3ea6efd */
    public String getErgNome() {
        return ergNome;
    }

    /** @param newErgNome
     * @pdOid 1950c70b-cb02-4760-bd0e-84bc51e73d22 */
    public void setErgNome(String newErgNome) {
        ergNome = newErgNome;
    }

    /** @pdOid 037db814-9eaf-4b80-9148-7d134cfdee79 */
    public String getErgTipo() {
        return ergTipo;
    }

    /** @param newErgTipo
     * @pdOid 6f903c7d-426c-48e5-b3d5-6bf25e5bad91 */
    public void setErgTipo(String newErgTipo) {
        ergTipo = newErgTipo;
    }

    /** @pdOid 24fc9c00-0afa-48d1-bc0a-9b0333709cc2 */
    public String getErgTempo() {
        return ergTempo;
    }

    /** @param newErgTempo
     * @pdOid e8924f5f-0745-43ba-9260-fd65f562d576 */
    public void setErgTempo(String newErgTempo) {
        ergTempo = newErgTempo;
    }

    /** @pdOid 5370949a-ee5e-47c1-a5b4-628a2ad2bdb2 */
    public String getErgObsTempo() {
        return ergObsTempo;
    }

    /** @param newErgObsTempo
     * @pdOid dadb1479-6898-4e24-ad1a-3264983cb0c6 */
    public void setErgObsTempo(String newErgObsTempo) {
        ergObsTempo = newErgObsTempo;
    }

    /** @pdOid db033dba-8382-4e65-9a78-2c0ec30b7f01 */
    public String getErgObsAluno() {
        return ergObsProf;
    }

    public String getErgObsProf() {
        return ergObsProf;
    }

    public void setErgObsProf(String ergObsProf) {
        this.ergObsProf = ergObsProf;
    }

    /** @param newErgObsAluno
     * @pdOid eac6a2f5-ac66-455f-89e6-fec85b527780 */
    public void setErgObsAluno(String newErgObsAluno) {
        ergObsProf = newErgObsAluno;
    }

      public void listar_ergs(ArrayList<ErgometriaEx> exs, List listaErgs) {

        listaErgs.removeAll();
        for (ErgometriaEx ergometriaEx : exs) {
            listaErgs.addItem(ergometriaEx.getErgNome()+" Tempo:"+ ergometriaEx.getErgTempo());
        }


    }
      public void limpar_listar_ergs(List listaErgs) {

        listaErgs.removeAll();


    }

    @Override
    public String toString() {
        return ergNome;
    }
}

Desde já agradeço!

Versão(1):

Ver a versão formatada

Problema SUPER irritante com ArrayList

Comentário

new question