Pertemuan 13 - PPB
NRP : 5025221056
Mata Kuliah : Pemrograman Perangkat Bergerak (C)
Student Registration App
Dalam artikel kali ini, saya ingin berbagi hasil eksplorasi saya dalam membuat aplikasi Android berbasis CRUD (Create, Read, Update, Delete) menggunakan MVVM Architecture, Jetpack Compose, dan Room Database. Aplikasi ini saya beri nama Student Registration App, sebuah aplikasi pengelolaan data siswa sederhana.
Langkah awal dimulai dengan membuat proyek baru menggunakan template Empty Activity di Android Studio. Saya membuat tampilan utama yang sederhana dari referensi berikut berisi form input nama dan email, tombol tambah, dan daftar siswa yang tersimpan.
Kemudian, saya melakukan eksplorasi dengan memodifikasi dan mengembangkan kode tersebut secara bertahap. Saya menerapkan MVVM Architecture dengan memisahkan layer: UI (Jetpack Compose), ViewModel (state management dengan StateFlow), DAO (Room abstraction), dan Room Database (persistent storage). Untuk reactive data flow, saya menggunakan Kotlin Flow yang otomatis meng-update UI setiap kali data di database berubah.
- Tambah siswa baru dengan validasi nama dan email
- Edit data siswa melalui dialog interaktif yang dapat memperbarui nama dan email
- Hapus siswa dengan konfirmasi dialog untuk mencegah penghapusan tidak sengaja
- Tampilan daftar siswa secara real-time menggunakan Flow dan StateFlow
- Fitur pencarian (search) untuk mencari siswa berdasarkan nama atau email
- Fitur sorting A-Z dan Z-A untuk mengurutkan daftar siswa berdasarkan nama
- Real-time email validation menggunakan Patterns.EMAIL_ADDRESS dengan visual feedback
- Tombol submit yang otomatis disabled ketika form belum valid
- Theme toggle dengan tiga pilihan: Mode Terang, Mode Gelap, dan Mengikuti Sistem
- Persistensi preferensi theme menggunakan SharedPreferences sehingga tetap tersimpan walaupun aplikasi di-restart
- Avatar dengan gradient warna yang berbeda untuk setiap siswa berdasarkan huruf depan nama
- Empty state yang informatif ketika belum ada data atau hasil pencarian kosong
- Room Database untuk menyimpan data siswa secara persistent di SQLite
- MVVM Architecture dengan proper separation of concerns
- Modern UI dengan Jetpack Compose dan Material Design 3 lengkap dengan gradient header
- Entity Siswa dengan kolom id (auto-generate), nama, dan email
- DAO (SiswaDao) dengan query insert, update, delete, dan getAllSiswa yang mengembalikan Flow
- AppDatabase configuration dengan Singleton pattern dan @Volatile annotation untuk thread safety
- StudentViewModel untuk mengelola state, business logic, dan operasi CRUD
- ViewModelProvider.Factory untuk dependency injection DAO ke ViewModel
- Theme.kt dengan custom color scheme untuk light dan dark mode
- ThemeMode enum untuk pilihan theme (LIGHT, DARK, SYSTEM)
- Validation.kt sebagai utility untuk validasi format email
- Komponen UI yang modular: MainScreen, FormInput, StudentItem, EditDialog, dan DeleteConfirmDialog
- MainActivity dengan setup ViewModel, SharedPreferences, dan theme state
Untuk testing aplikasi, pengguna dapat langsung menambahkan data siswa melalui form di halaman utama. Setiap data yang ditambahkan akan langsung tersimpan di SQLite database dan muncul di daftar secara real-time berkat Flow yang reactive. Pengguna juga dapat melakukan edit dan delete pada setiap item siswa, mencari siswa berdasarkan nama atau email, serta mengubah tampilan tema sesuai preferensi.
Melalui project Student Registration App ini, saya mempelajari banyak hal penting dalam Android development: bagaimana mengimplementasikan operasi CRUD lengkap dengan Room Database, menggunakan Flow dan StateFlow untuk reactive UI yang otomatis update, menerapkan State Hoisting di Jetpack Compose untuk pengelolaan state yang clean, membuat custom ViewModelProvider.Factory untuk dependency injection, mendesain UI modern dengan Material Design 3 termasuk gradient dan custom color scheme, serta mengelola persistent preferences dengan SharedPreferences. Untuk melihat update database secara real-time, buka App Inspection di Android Studio dan navigasi ke tab Database Inspector, lalu pilih tabel siswa. Setiap perubahan dari aplikasi akan langsung terlihat di tabel database. Berikut demo aplikasi Student Registration App:
Hasil pembelajaran saya tersebut dapat dilihat pada resource berikut. Demikian hasil eksplorasi saya. Terima kasih sudah menyimak :)
Link:
Komentar
Posting Komentar