Estou com bastante problemas durante essas aulas. Um deles é que não consigo editar um Aluno na lista (quando clico em um nome ele abre o formulario como se fosse para criar um novo aluno, ao inves de editar algum existente). Sendo assim meu app nao condiz com o mostrado na aula.
A minha activity lista de alunos esta assim:
public class ListaAlunosActivity extends AppCompatActivity {
public static final String TITULO_APPBAR = "Lista de Alunos";
private final AlunoDAO dao = new AlunoDAO();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lista_alunos);
configuraFABNovo();
setTitle(TITULO_APPBAR);
}
private void configuraFABNovo() {
FloatingActionButton botaoNovoAluno = findViewById(R.id.activity_lista_alunos_fab_novo_aluno);
botaoNovoAluno.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
abreFormularioAlunoActivity();
}
});
}
private void abreFormularioAlunoActivity() {
startActivity(new Intent(this, FormularioAlunoActivity.class));
}
@Override
protected void onResume() {
super.onResume();
configuraLista();
}
private void **configuraLista**() {
ListView listaDeAlunos = findViewById(R.id.activity_lista_alunos_listview);
List<Aluno> alunos = dao.todos();
listaDeAlunos.setAdapter(
new ArrayAdapter<>(
this,
android.R.layout.simple_list_item_1,alunos ));
listaDeAlunos.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Aluno alunoEscolhido = alunos.get(position);
Intent editarFormulario = new Intent(ListaAlunosActivity.this,
FormularioAlunoActivity.class);
editarFormulario.putExtra("aluno", alunoEscolhido);
startActivity(editarFormulario);
}
});
}
}
e meu formulario esta da seguinte maneira nesse momento:
package com.example.agenda.ui.activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import com.example.agenda.R;
import com.example.agenda.dao.AlunoDAO;
import com.example.agenda.model.Aluno;
public class FormularioAlunoActivity extends AppCompatActivity {
public static final String TITULO_APPBAR = "Novo Aluno";
public static final AlunoDAO dao = new AlunoDAO();
private EditText campoNome;
private EditText campoTelefone;
private EditText campoEmail;
private Aluno aluno;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_formulario_aluno);
setTitle(TITULO_APPBAR);
inicializacaoCampos();
configuraBotaoSalvar(dao);
Intent dados = getIntent();
if (dados.hasExtra("aluno") && aluno != null) {
aluno = (Aluno) dados.getSerializableExtra("Aluno");
campoNome.setText(aluno.getNome());
campoTelefone.setText(aluno.getTelefone());
campoTelefone.setText(aluno.getEmail());
} else {
aluno = new Aluno();
}
}
private void configuraBotaoSalvar(AlunoDAO dao) {
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);
} else {
dao.salva(aluno);
}
finish();
}
});
}
private void inicializacaoCampos() {
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);
}
}