Meu id está sempre vindo como null do FormularioHelper, por isso sempre entra no daoinserir ao invés do daoaltera.
FormulárioHelper
public class FormularioHelper {
private EditText campoNome;
private EditText campoEndereco;
private EditText campoTelefone;
private EditText campoSite;
private RatingBar campoNota;
Aluno aluno;
public FormularioHelper(FormularioActivity activity) {
aluno = new Aluno();
campoNome = (EditText) activity.findViewById(R.id.form_nome);
campoEndereco = (EditText) activity.findViewById(R.id.form_endereco);
campoTelefone = (EditText) activity.findViewById(R.id.form_telefone);
campoSite = (EditText) activity.findViewById(R.id.form_site);
campoNota = (RatingBar) activity.findViewById(R.id.form_nota);
}
public Aluno pegaAluno(){
aluno.setNome(campoNome.getText().toString());
aluno.setEndereco(campoEndereco.getText().toString());
aluno.setTelefone(campoTelefone.getText().toString());
aluno.setSite(campoSite.getText().toString());
aluno.setNota(Double.valueOf(campoNota.getProgress()));
return aluno;
}
public void preencheFormulario(Aluno aluno) {
this.aluno=aluno;
campoNome.setText(aluno.getNome());
campoEndereco.setText(aluno.getEndereco());
campoTelefone.setText(aluno.getTelefone());
campoSite.setText(aluno.getSite());
campoNota.setProgress(aluno.getNota().intValue());
Log.d("PREENCHER", "Aluno: " + aluno.toString());
}
}
DAO
@NonNull
private ContentValues pegaDadosAluno(Aluno aluno) {
ContentValues dados = new ContentValues();
dados.put("nome",aluno.getNome());
dados.put("endereco",aluno.getEndereco());
dados.put("telefone",aluno.getTelefone());
dados.put("site",aluno.getSite());
dados.put("nota",aluno.getNota());
return dados;
}
public void altera(Aluno aluno) {
SQLiteDatabase db = getWritableDatabase();
ContentValues dados = pegaDadosAluno(aluno);
String[] params = {aluno.getId().toString()};
db.update("Alunos", dados, "id = ?", params);
}
ListaAlunoActivity
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.menu_formulario_ok :
Aluno aluno = helper.pegaAluno();
AlunoDao dao = new AlunoDao(this);
Log.d("FormAct", "ID: " + aluno.getId());
if (aluno.getId() != null) {
dao.altera(aluno);
} else {
dao.insere(aluno);
}
dao.close();
Toast.makeText(FormularioActivity.this, "Aluno " + aluno.getNome() + " salvo com sucesso!", Toast.LENGTH_SHORT).show();
finish();
break;
}
return super.onOptionsItemSelected(item);
}