Latihan: Membaca dan menulis dengan Room
Gambaran Umum
Anda telah mempelajari tentang SQLite dan Room sebagai antarmuka untuk mengakses data dalam database SQLite. Dalam aktivitas ini, Anda akan berlatih membaca dan menulis data ke database SQLite menggunakan Room. Setelah menyelesaikan aktivitas ini, Anda akan dapat bekerja dengan data yang disimpan dalam database SQLite untuk menyelesaikan masalah persistensi lokal. Hal ini akan memungkinkan Anda untuk mengembangkan aplikasi Android yang mengelola data, sebuah kemampuan penting dalam karier Anda sebagai pengembang aplikasi.
Skenario
Little Lemon sedang mengembangkan aplikasi untuk mengelola menunya. Anda telah diminta untuk menambahkan persistensi lokal ke aplikasi pengeditan menu menggunakan Room. Aplikasi harus dapat menyimpan, menghapus, dan menampilkan item menu. Untuk berlatih membaca dan menulis data menggunakan Room, Anda akan menyimpan item menu baru dalam tabel SQLite menu. Kemudian Anda akan menampilkan data dalam tabel dan mengizinkan pengguna untuk menghapus item.
Petunjuk
Gunakan file ZIP ini untuk mengunduh proyek awal.
Download zip melalui link berikut : https://drive.google.com/file/d/1KyY3vDFs6enD1CmD7vkFFlAFlTlcIPYx/view?usp=sharing
Langkah 1: Unduh aplikasi pengeditan menu
- Mulailah dengan mengunduh dan membuka ritsleting proyek awal.
- Buka proyek di Android Studio.
Jika Anda menjalankan proyek, Anda akan melihat antarmuka pengeditan menu dan pesan menu kosong. Pada tahap ini, jika Anda mencoba menambahkan item menu baru, kolom akan dikosongkan tetapi tidak ada item yang akan ditambahkan.
Langkah 2: Tambahkan dependensi Room ke Gradle
- Buka app build.gradle file dan tambahkan dependensi Room ke dalamnya:
implementation "androidx.room:room-runtime:$room_version" |
- Ingatlah untuk juga menambahkan plugin kapt ('org.jetbrains.kotlin.kapt'), yang akan memberikan akses ke perpustakaan Room kepada proyek.
Langkah 3: Mendeklarasikan struktur basis data
- Mulailah dengan mengubah MenuItem menjadi sebuah entitas dengan menggunakan anotasi Room yang sesuai.
- Beri keterangan pada bidang id untuk menjadikannya sebagai kunci utama.
- Lanjutkan dengan membuat antarmuka MenuDao .
- Tentukan kueri untuk memilih semua item menu dan tetapkan ke fungsi getAllMenuItems yang mengembalikan LiveData dari List of MenuItem.
- Tambahkan fungsi bernama saveMenuItem, yang diberi keterangan dengan Insert dan mengambil argumen MenuItem .
- Terakhir, tambahkan fungsi deleteMenuItem yang dianotasi dengan Delete dan mengambil argumen MenuItem .
- Selanjutnya, deklarasikan kelas abstrak database bernama MenuDatabase. Pastikan kelas tersebut memperluas RoomDatabase dan memiliki fungsi abstrak bernama menuDao yang mengembalikan sebuah MenuDao. Entitasnya haruslah MenuItem dan versinya haruslah 1.
Langkah 4: Membuat basis data
- Di MainActivity, deklarasikan sebuah field pribadi bernama database.
- Buatlah basis data MenuDatabase menggunakan fungsi databaseBuilder dari Room.
- Panggil file database "menu.db". Pastikan untuk menginisialisasi database secara malas dengan memanggil "by lazy", karena konteks aplikasi tidak tersedia ketika Activity di-instansiasi.
- Jalankan aplikasi untuk memastikannya masih berfungsi. Seharusnya aplikasi akan berperilaku sama seperti sebelumnya.
Langkah 5: Lampirkan daftar item menu ke status aplikasi.
Masih di MainActivity, perbarui menuItems agar dapat dibaca dari database. Ini adalah langkah-langkah yang harus Anda ikuti:
- Dapatkan menuDao dari database.
- Kemudian, dapatkan semua item menu dari menuDao.
- Terakhir, amati item menu sebagai state. Pastikan untuk memasukkan daftar kosong sebagai nilai awal untuk menghindari menuItems menjadi null.
- Jalankan aplikasi lagi. Seharusnya masih berperilaku sama seperti sebelumnya.
Langkah 6: Menambahkan item menu baru ke dalam basis data
Ketika pengguna mengetuk tombol "Add dish", simpan data dari kolom input ke dalam database. Untuk melakukan ini,
- Perbarui fungsi onClick . Pertama, deklarasikan sebuah variabel bernama newMenuItem dan tetapkan sebuah instance baru dari MenuItem. Untuk id item baru, Anda dapat menggunakan "UUID.randomUUID().toString()". Ini akan menghasilkan pengenal unik yang baru setiap saat. Untuk harga, ubah nilainya menjadi ganda menggunakan fungsi ekstensi string "toDouble()t".
- Sekarang, tambahkan item baru tersebut ke dalam database. Dapatkan menuDao dari database, lalu panggil saveMenuItem dengan newMenuItem. Ingatlah untuk melakukan penambahan di thread latar belakang. Hal ini dapat dilakukan dengan memanggil peluncuran pada lifecycleScope dan kemudian membungkus eksekusi dalam blok withContext(IO).
- Jalankan aplikasi. Anda seharusnya sudah bisa menambahkan item menu baru.
Langkah 7: Menghapus item
Untuk menyelesaikan latihan ini,
- Perbarui fungsi onClick pada tombol Delete .
- Dapatkan menuDao dari database dan panggil deleteMenuItem, dengan memasukkan menuItem. Sama seperti pada langkah 6, pastikan untuk menjalankan operasi ini pada thread latar belakang.
- Jalankan aplikasi. Anda seharusnya sudah bisa menghapus item menu.
Bagus sekali! Anda telah menyelesaikan latihan ini.
Kesimpulan
Dengan menyelesaikan latihan ini, Anda telah menunjukkan kemampuan Anda untuk membaca, menulis, dan menghapus data dari database MySQL menggunakan Room. Ketika Anda mengembangkan lebih banyak aplikasi Android, Anda akan menemukan bahwa bekerja dengan database dapat membantu menyelesaikan banyak tantangan. Mengetahui cara bekerja dengan Room akan sangat membantu Anda dalam karier Anda sebagai pengembang Android.
There are no comments for now.