Olá,
Já estou há um tempo tentando descobrir por que os alunos estão perdendo estrelas a cada vez que abro uma entrada para editar.
Se dou 5 estrelas, salvo e abro novamente, o aluno aparece com 3, por exemplo.
obs.: Vou postar o formulário helper, o Dao.buscaAluno e o click no FormularioActivity aqui, e o resto vou botar no bpaste.
Formulario helper:
public class FormularioHelper {
private final EditText campoNome;
private final EditText campoEndereco;
private final EditText campoTelefone;
private final EditText campoEmail;
private final RatingBar campoNota;
private Aluno aluno;
public FormularioHelper(Formulario activity) {
campoNome = (EditText) activity.findViewById(R.id.formulario_nome);
campoEndereco = (EditText) activity.findViewById(R.id.formulario_endereco);
campoTelefone = (EditText) activity.findViewById(R.id.formulario_telefone);
campoEmail = (EditText) activity.findViewById(R.id.formulario_email);
campoNota = (RatingBar) activity.findViewById(R.id.formulario_nota);
aluno = new Aluno();
}
public Aluno pegaAluno() {
aluno.setNome(campoNome.getText().toString());
aluno.setEndereco(campoEndereco.getText().toString());
aluno.setTelefone(campoTelefone.getText().toString());
aluno.setEmail(campoEmail.getText().toString());
aluno.setNota(Double.valueOf(campoNota.getRating()));
return aluno;
}
public void preencheFormulario(Aluno aluno) {
campoNome.setText(aluno.getNome());
campoEndereco.setText(aluno.getEndereco());
campoEmail.setText(aluno.getEmail());
campoTelefone.setText(aluno.getTelefone());
campoNota.setProgress(aluno.getNota().intValue());
this.aluno = aluno;
}
}
busca alunos no AulunosDAO:
public List<Aluno> buscaAlunos() {
String sql = "SELECT * FROM Alunos;";
SQLiteDatabase db = getReadableDatabase();
Cursor cur = db.rawQuery(sql, null);
List<Aluno> alunos = new ArrayList<Aluno>();
while(cur.moveToNext()){
Aluno aluno = new Aluno();
aluno.setId(cur.getLong(cur.getColumnIndex("id")));
aluno.setNome(cur.getString(cur.getColumnIndex("nome")));
aluno.setEndereco(cur.getString(cur.getColumnIndex("endereco")));
aluno.setEmail(cur.getString(cur.getColumnIndex("email")));
aluno.setTelefone(cur.getString(cur.getColumnIndex("telefone")));
aluno.setNota(cur.getDouble(cur.getColumnIndex("nota")));
alunos.add(aluno);
}
cur.close();
db.close();
return alunos;
}
a chamada no FormularioActivities:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_formulario_ok:
Aluno aluno = helper.pegaAluno();
AlunoDAO dao = new AlunoDAO(this);
if (aluno.getId() != 0){
dao.altera(aluno);
} else{
dao.insere(aluno);
}
Toast.makeText(Formulario.this, "Aluno " + aluno.getNome() +" salvo.", Toast.LENGTH_SHORT).show();
dao.close();
finish();
break;
}
return super.onOptionsItemSelected(item);
}
Aluno.java: https://bpaste.net/show/cac80f48c197
AlunoDAO: https://bpaste.net/show/8ba56844b092
ListaAlunos: https://bpaste.net/show/a33dc605f5a9
FormularioActivity: https://bpaste.net/show/94d8adb59c12
layouts: https://bpaste.net/show/1123bfa1800b
Tentei debugar colocando breakpoint em todos os "nota" que achei.
o primeiro depois de alterar o contato: http://i.imgur.com/tF5YKly.png
o último ante do formulário abrir novamente: http://i.imgur.com/Urn84S3.png
o formulário: http://i.imgur.com/U5dHkVt.png
Está difćil encontrar o porque tudo parce normal até a lista abrir... Alguma ideia de como prosseguir?