1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

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!

  • A imagem que postei é do debug da ArrayList do tipo Dia que armazena o arrayList de exercícios.

    Jrmanzini   03 de ago de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java swing arraylist ou faça a sua própria pergunta.