1
resposta

sobrescreve nome já salvo

ao salvar a primeira vez ele até salva, porém ao salvar o segundo nome da lista, ele sobrescreve o primeiro já salvo e salva novamente na segunda linha. activity ListaDeAlunos

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lista_alunos);
        configuraBotaoFloat();
    }

    @Override
    protected void onResume() {
        super.onResume();
        configuraLista(dao);
    }

    private void configuraLista(AlunoDAO dao) {
        setTitle(TITULO_APPBAR);
        ListView listaDealunos = findViewById(R.id.activity_lista_alunos);
        final List<Aluno> alunos = dao.todos();
        configuraAdapter(listaDealunos, alunos);
        configuraListenerDeCliqueporItem(listaDealunos);

    }

    private void configuraListenerDeCliqueporItem(ListView listaDealunos) {
        listaDealunos.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int posicao, long id) {
                Aluno alunoEscolhido = (Aluno) adapterView.getItemAtPosition(posicao);
                abreFormularioModoEdicao(alunoEscolhido);

            }
        });
    }

    private void abreFormularioModoEdicao(Aluno aluno) {
        Intent vaiParaFormularioActivity = new Intent(ListaAlunosActivity.this, FormularioAlunoActivity.class);
        vaiParaFormularioActivity.putExtra(CHAVE_ALUNO, aluno);
        startActivity(vaiParaFormularioActivity);
    }

    private void configuraAdapter(ListView listaDealunos, List<Aluno> alunos) {
        listaDealunos.setAdapter(new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_1,
                alunos));
    }

    private void configuraBotaoFloat() {
        FloatingActionButton botaoAdicionar = findViewById(R.id.activity_btn_novoAluno);
        botaoAdicionar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                abreFormularioModoEdicao();
            }
        });
    }

    private void abreFormularioModoEdicao() {
        startActivity(new Intent(this,
                FormularioAlunoActivity.class));
    }
}

e essa é a activity do formulário de adição de nomes na agenda

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

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

    private void configuraBotaoSalvar() {
        Button botaoSalvar = findViewById(R.id.activity_formulario_aluno_botao_salvar);
        botaoSalvar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                preencheAluno();
                if(aluno.temIdValido()) {
                    dao.edita(aluno);
                    Toast.makeText(FormularioAlunoActivity.this,
                            "Editado com sucesso!", Toast.LENGTH_SHORT).show();
                }else{
                    dao.salva(aluno);
                    Toast.makeText(FormularioAlunoActivity.this,
                            "salvo", Toast.LENGTH_SHORT).show();
                }
                finish();

            }
        });
    }

    private void iniciaCampos() {
        campoNome = findViewById(R.id.activity_formulario_aluno_nome);
        campoTelefone = findViewById(R.id.activity_formulario_aluno_telefone);
        campoEmail = findViewById(R.id.activity_formulario_aluno_email);
    }


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

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

    }

}

Já revisei todo o código e até refatorei da mesma maneira que o professor mas não funcionou

1 resposta

irmão, faz um debug que vc vai ver o erro na hora.. pois aí é erro bobo (não posso te ajudar mais , pq não entendo dessa tecnlogia) , mas faça o debug que vc verá.

_