From 22306965ed0bfa82a0d0ee38147771c2fec23468 Mon Sep 17 00:00:00 2001 From: Bradley Bickford Date: Sun, 13 Apr 2025 20:12:41 -0400 Subject: [PATCH] Adding Note Editing --- .../notesapp/MainActivity.java | 2 +- .../coldlightalchemist/notesapp/NewNote.java | 26 +++++++++++++++++-- .../notesapp/NotesRecyclerViewAdapter.java | 18 +++++++++++-- .../notesapp/db/dao/NoteDAO.java | 4 +++ .../notesapp/db/entities/Note.java | 4 ++- 5 files changed, 48 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/coldlightalchemist/notesapp/MainActivity.java b/app/src/main/java/com/coldlightalchemist/notesapp/MainActivity.java index d346c47..74a03a7 100644 --- a/app/src/main/java/com/coldlightalchemist/notesapp/MainActivity.java +++ b/app/src/main/java/com/coldlightalchemist/notesapp/MainActivity.java @@ -47,7 +47,7 @@ public class MainActivity extends AppCompatActivity { notesRecyclerView = (RecyclerView) findViewById(R.id.noteRecyclerView); notesRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - noteAdapter = new NotesRecyclerViewAdapter(db.noteDAO()); + noteAdapter = new NotesRecyclerViewAdapter(db.noteDAO(), this::startActivity); notesRecyclerView.setAdapter(noteAdapter); diff --git a/app/src/main/java/com/coldlightalchemist/notesapp/NewNote.java b/app/src/main/java/com/coldlightalchemist/notesapp/NewNote.java index 88f54c0..f029f98 100644 --- a/app/src/main/java/com/coldlightalchemist/notesapp/NewNote.java +++ b/app/src/main/java/com/coldlightalchemist/notesapp/NewNote.java @@ -22,6 +22,8 @@ public class NewNote extends AppCompatActivity { private Button saveNote; + private Note note; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -36,6 +38,16 @@ public class NewNote extends AppCompatActivity { newNoteTitle = (EditText) findViewById(R.id.newNoteTitle); newNoteContent = (EditText) findViewById(R.id.newNoteContent); + if(getIntent().hasExtra("editableNote")) { + note = (Note) getIntent().getSerializableExtra("editableNote"); + + newNoteTitle.getText().clear(); + newNoteTitle.getText().append(note.noteTitle); + + newNoteContent.getText().clear(); + newNoteContent.getText().append(note.noteContent); + } + saveNote = (Button) findViewById(R.id.saveNote); saveNote.setOnClickListener((v) -> { if(newNoteTitle.getText().toString().isEmpty() || newNoteContent.getText().toString().isEmpty()) { @@ -43,11 +55,21 @@ public class NewNote extends AppCompatActivity { return; } - Note note = new Note(); + boolean noteWasNull = note == null; + + if(noteWasNull) { + note = new Note(); + } + note.noteTitle = newNoteTitle.getText().toString(); note.noteContent = newNoteContent.getText().toString(); - NoteDB.getDB(getApplicationContext()).noteDAO().insertAll(note); + if(noteWasNull) { + NoteDB.getDB(getApplicationContext()).noteDAO().insertAll(note); + } else { + NoteDB.getDB(getApplicationContext()).noteDAO().update(note); + } + finish(); }); } diff --git a/app/src/main/java/com/coldlightalchemist/notesapp/NotesRecyclerViewAdapter.java b/app/src/main/java/com/coldlightalchemist/notesapp/NotesRecyclerViewAdapter.java index 066adb3..5d9c607 100644 --- a/app/src/main/java/com/coldlightalchemist/notesapp/NotesRecyclerViewAdapter.java +++ b/app/src/main/java/com/coldlightalchemist/notesapp/NotesRecyclerViewAdapter.java @@ -1,5 +1,6 @@ package com.coldlightalchemist.notesapp; +import android.content.Intent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -12,9 +13,13 @@ import com.coldlightalchemist.notesapp.db.NoteDB; import com.coldlightalchemist.notesapp.db.dao.NoteDAO; import com.coldlightalchemist.notesapp.db.entities.Note; +import java.util.function.Consumer; + public class NotesRecyclerViewAdapter extends RecyclerView.Adapter { private final NoteDAO noteSource; + private final Consumer activityStarter; + public static class NoteRecyclerViewHolder extends RecyclerView.ViewHolder { private final TextView rvNoteTitle; @@ -37,8 +42,9 @@ public class NotesRecyclerViewAdapter extends RecyclerView.Adapter activityStarter) { this.noteSource = noteSource; + this.activityStarter = activityStarter; } @NonNull @@ -47,7 +53,15 @@ public class NotesRecyclerViewAdapter extends RecyclerView.Adapter { + Intent intent = new Intent(v.getContext(), NewNote.class); + intent.putExtra("editableNote", holder.getNote()); + activityStarter.accept(intent); + }); + + return holder; } @Override diff --git a/app/src/main/java/com/coldlightalchemist/notesapp/db/dao/NoteDAO.java b/app/src/main/java/com/coldlightalchemist/notesapp/db/dao/NoteDAO.java index 5b48834..f7e9dea 100644 --- a/app/src/main/java/com/coldlightalchemist/notesapp/db/dao/NoteDAO.java +++ b/app/src/main/java/com/coldlightalchemist/notesapp/db/dao/NoteDAO.java @@ -4,6 +4,7 @@ import androidx.room.Dao; import androidx.room.Delete; import androidx.room.Insert; import androidx.room.Query; +import androidx.room.Update; import com.coldlightalchemist.notesapp.db.entities.Note; @@ -20,6 +21,9 @@ public interface NoteDAO { @Query("SELECT * FROM notes WHERE note_title = :noteTitle") Note getNoteByTitle(String noteTitle); + @Update(entity = Note.class) + void update(Note note); + @Insert void insertAll(Note... notes); diff --git a/app/src/main/java/com/coldlightalchemist/notesapp/db/entities/Note.java b/app/src/main/java/com/coldlightalchemist/notesapp/db/entities/Note.java index 05aab4f..da13ba2 100644 --- a/app/src/main/java/com/coldlightalchemist/notesapp/db/entities/Note.java +++ b/app/src/main/java/com/coldlightalchemist/notesapp/db/entities/Note.java @@ -4,8 +4,10 @@ import androidx.room.ColumnInfo; import androidx.room.Entity; import androidx.room.PrimaryKey; +import java.io.Serializable; + @Entity(tableName = "notes") -public class Note { +public class Note implements Serializable { @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "note_id") public int id;