The app was incorrectly updating the note's timestamp every time it was saved, even when no changes were made. This caused the displayed date to show 'last opened' instead of 'created/last edited'. Changes: - Added hasChanges() method to Note model to detect actual content modifications - Added markAsSaved() method to update original values after successful save - Modified saveNoteImmediately() to only update timestamp when changes exist - Used transient fields for tracking original values (not serialized) |
||
|---|---|---|
| app | ||
| gradle/wrapper | ||
| gradle-8.0 | ||
| .gitignore | ||
| README.md | ||
| build.gradle | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| settings.gradle | ||
README.md
Notes App
A lightweight personal notes app for Android with plain text and checklist note types.
Features
- Two Note Types: Plain text notes and checklists
- Dark Mode Only: Optimized for low-light usage
- Sortable List: Sort by date (most/oldest) or alphabetically (A-Z/Z-A)
- Swipe to Delete: Swipe any note left/right to delete with confirmation
- Auto-save: Notes are automatically saved as you type
- Checklist Features:
- Add/remove items
- Toggle checkboxes
- Progress indicator (X/Y completed)
- "Delete All Checked" button - Remove all checked items at once
Requirements
- Android Studio Hedgehog or later
- JDK 17
- Minimum SDK: API 24 (Android 7.0)
- Target SDK: API 34 (Android 14)
How to Build
- Open Android Studio
- Select File > Open and navigate to the
NotesAppfolder - Wait for Gradle sync to complete
- Connect an Android device or start an emulator (API 24+)
- Click Run (Shift+F10) or select Run > Run 'app'
Project Structure
NotesApp/
├── app/src/main/java/com/notesapp/
│ ├── MainActivity.java # Main activity hosting fragments
│ ├── fragments/
│ │ ├── NotesListFragment.java # Note list with sorting & swipe-to-delete
│ │ └── NoteEditorFragment.java # Editor for text and checklist notes
│ ├── adapters/
│ │ ├── NotesAdapter.java # RecyclerView adapter for note cards
│ │ └── ChecklistAdapter.java # RecyclerView adapter for checklist items
│ ├── models/
│ │ ├── Note.java # Data model with JSON serialization
│ │ └── ChecklistItem.java # Checklist item data model
│ └── utils/
│ └── NotesStorage.java # SharedPreferences storage layer
├── app/src/main/res/
│ ├── layout/ # XML layouts
│ ├── drawable/ # Vector icons
│ └── values/ # Colors, strings, themes
└── build.gradle # App configuration
Storage
Notes are stored in SharedPreferences with the following structure:
note_count: Next available IDsort_order: Current sort preference- Per-note data (JSON serialized): type, title, content/items, timestamp
License
Personal use only.