Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não edita o existente, mas cria um novo

Eu olhei todo o meu código várias vezes, não consigo encontrar meu erro. Em vez de editar, cria um novo aluno.

`package alura.com.br.agenda.ui.activity;

import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import alura.com.br.agenda.R; import alura.com.br.agenda.dao.AlunoDAO; import alura.com.br.agenda.model.Aluno;

public class FormularioAlunoActivity extends AppCompatActivity {

private static final String TITULO_APP_BAR = "Novo Aluno";
private TextView campoNome;
private TextView campoTelefone;
private TextView campoEmail;
final AlunoDAO dao =new AlunoDAO();
private Aluno aluno;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_formulario_aluno);

    setTitle(TITULO_APP_BAR);
    inicializacaoDosCampos();
    configuraBotaoSalvar();

    Intent dados = getIntent();
    if (dados.hasExtra("aluno")){
        aluno = (Aluno) dados.getSerializableExtra("aluno");
        campoNome.setText(aluno.getNome());
        campoEmail.setText(aluno.getEmail());
        campoTelefone.setText(aluno.getTelefone());
    } else{
        aluno = new Aluno();
    }


}

private void configuraBotaoSalvar() {
    Button botaoSalvar = findViewById(R.id.activity_formulario_de_aluno_botao_salvar);
    botaoSalvar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

// Aluno alunoCriado = criaAluno(); // salva(alunoCriado); preencheAluno(); if(aluno.temIdValido()) { dao.edita(aluno); } else{ dao.salva(aluno); } finish();

        }
    });
}

private void inicializacaoDosCampos() {
    campoNome = findViewById(R.id.activity_formulario_de_aluno_nome);
    campoTelefone = findViewById(R.id.activity_formulario_de_aluno_telefone);
    campoEmail = findViewById(R.id.activity_formulario_de_aluno_email);
}

private void preencheAluno() {
    String nome = campoNome.getText().toString();
    String telefone = campoTelefone.getText().toString();
    String email = campoEmail.getText().toString();

    aluno.setNome(nome);
    aluno.setEmail(email);
    aluno.setTelefone(telefone);

// Aluno alunoCriado = new Aluno(nome, telefone, email); // return alunoCriado; } }`

package alura.com.br.agenda.model;

import androidx.annotation.NonNull;

import java.io.Serializable;

public class Aluno implements Serializable {
    private int id = 0;
    private String nome;
    private String telefone;
    private String email;

    public Aluno(){};
    public Aluno(String nome, String telefone, String email) {
        this.nome = nome;
        this.telefone = telefone;
        this.email = email;
    }
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public String getTelefone() {
        return telefone;
    }

    public String getEmail() {
        return email;
    }

    @NonNull
    @Override
    public String toString() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public boolean temIdValido() {
        return id < 0;
    }
}
package alura.com.br.agenda.dao;

import java.util.ArrayList;
import java.util.List;

import alura.com.br.agenda.model.Aluno;

public class AlunoDAO {

    private final static List<Aluno> alunos = new ArrayList<>();
    private static int contadorDeIds = 1;

    public void salva(Aluno aluno) {
        aluno.setId(contadorDeIds);
        alunos.add(aluno);
        contadorDeIds++;
    }

    public void edita(Aluno aluno) {
        Aluno alunoEcontrato = null;
        for (Aluno a : alunos) {
            if (a.getId() == aluno.getId()) {
                alunoEcontrato = a;
            }
        }
        if (alunoEcontrato != null){
            int posicaoDoAluno = alunos.indexOf(alunoEcontrato);
            alunos.set(posicaoDoAluno, aluno);

        }
    }

    public List<Aluno> todos() {
        return new ArrayList<>(alunos);
    }
}
1 resposta
solução!

Encontrei o erro. Era apenas o sinal que eu inverti no método temIdValido. Resolvido!