Salvar apenas se modificar

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()));
  }
}

Abraço.

Não funciona, talvez seja porque na MainActivity tenha um loadNote e nele tem
List<Note> list = dao.getNotes(); deve dar algum conflito

} else {
                Note note = (Note) dao.getNotes();
                if ((!note.getNoteText().equals(text) || (!note.getNoteTitle().equals(text2)))){
                    temp.setNoteText(text);
                    temp.setNoteTitle(text2);
                    temp.setNoteDate(date);
                    temp.setNoteDate2(date);
                    temp.setNoteDate3(date);
                    temp.setNoteDate4(date);
                    dao.updateNote(temp);
                }

            }

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.

Abraço.

Ja fiz reescrevi em 3 tipos diferentes

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); }