No app de notas eu preciso que ele atualize a nota apenas se ela for modificada,
no momento atual toda vez que clico em salvar um nota existente ela salva sem eu ter feito nenhuma alteração
private void onSaveNote() {
String text = inputNote.getText().toString();
String text2 = inputTitle.getText().toString();
if (!text.isEmpty()) {
long date = new Date().getTime();
if (temp == null) {
temp = new Note(text, text2, date);
dao.insertNote(temp);
} else {
temp.setNoteText(text);
temp.setNoteTitle(text2);
temp.setNoteDate(date);
temp.setNoteDate2(date);
temp.setNoteDate3(date);
temp.setNoteDate4(date);
dao.updateNote(temp);
}
Conceitualmente, você precisa pegar os dados da nota atual e comparar com os novos valores informados antes de fazer a atualização (seu método updateNote, suponho). Algo como:
Note note = dao.getNote(); // nome de exemplo, use seu método que recupera a nota a ser atualizada.
if ((!note.getText().equals(text)) || (!note.getTitle().equals(text2)){
temp.setNoteText(text);
temp.setNoteTitle(text2);
temp.setNoteDate(date);
temp.setNoteDate2(date);
temp.setNoteDate3(date);
temp.setNoteDate4(date);
dao.updateNote(temp);
}
Opcionalmente, você pode criar um método para comparar 2 notas e dizer se são iguais, e usar no if acima. Algo como:
class Note{
public boolean isEqual(Note other){
return (this.text.equals(other.getText())) && (this.title.equals(other.getTitle()));
}
}
A ideia do meu código foi exemplificar o que você pode fazer, não te dar o código pronto e funcionando. Você precisa adaptar para o seu cenário, não simplesmente copiar e colar.
A parte é importante é a comparação (if). A nota a ser comparada para ver se houve alterações fica por sua conta.
Analisando o codigo. coloquei analise em comite … se 1 estiver vazio vc salva senao salva em 3 ? o seu codigo ou salva ou salva.
outra coisa em 2 ele ve se temp==null mas nao temos informação o que vc fez antes com esta informação antes mas é inrrelevante ele vai ler se for null ele toma a ação e vai salvar. neste crie um metodo que consulte antes a informação se a sua nota esta no banco e dai tome a ação conforme retorno. para que eu pudesse te orientar precisaria ver mais informações do seu codigo. ou seja como esta o metodo de consulta do seu dao
private void onSaveNote() {
String text = inputNote.getText().toString();
String text2 = inputTitle.getText().toString();
if (!text.isEmpty()) { //1
long date = new Date().getTime();
if (temp == null) { //2
temp = new Note(text, text2, date);
dao.insertNote(temp);
} else { //3
temp.setNoteText(text);
temp.setNoteTitle(text2);
temp.setNoteDate(date);
temp.setNoteDate2(date);
temp.setNoteDate3(date);
temp.setNoteDate4(date);
dao.updateNote(temp);
}
cria o metodo equals e hashcode com todos os campos, e antes de salvar, recuperar a nota do banco e compara se estao iguais. os proprios ides criam esse metodo dentro do objeto para voce. opcao Generate hashcode and equals
ai voce compara if(!notaTemp.equals(notaDoBanco)) {salvar(notaTemp); }