LAPORAN PRAKTIKUM APLIKASI MOBILE
Dokumentasi Pelaksanaan Praktikum Pertemuan 6 dan 7
Kelas : B1 Disusun Oleh :
Rama Putra Hastono J0404221066
Nama Dosen Praktikum : Aditya Wicaksono S.Komp., M.Kom.
Nama Asisten Dosen : Yaumil Luqyana
PROGRAM STUDI TEKNOLOGI REKAYASA KOMPUTER SEKOLAH VOKASI IPB UNIVERSITY
2024
DOKUMENTASI PRAKTIKUM PADA PERTEMUAN 6
Pada pertemuan 6-7 ini, menambahkan project baru yang bernamaRoom Word. Project ini akan mempelajari cara mendesain dan membuat aplikasi menggunakan Ruang Komponen Arsitektur, ViewModel, dan LiveData, serta membuat aplikasi yang melakukan hal berikut:
- Menampilkan semua kata di RecyclerViewdalam MainActivity.
- Membuka aktivitas kedua saat pengguna mengetuk tombol (+). Saat pengguna memasukkan sebuah kata, menambahkan kata tersebut ke database dan daftar.
- Dan menambahkan tombol (x) untuk menghapus data yang telah masuk.
Penjelasan lengkap sebagai berikut : 1. Memperbarui file Gradle
- Di Android Studio, klik tab Projects dan perluas folder Gradle Scripts.
- Buka build.gradle( Modul: aplikasi ).
-compileOptions Tambahkan blok berikut di dalam android blok untuk menetapkan kompatibilitas target dan sumber ke 1.8, yang memungkinkan kita menggunakan lambda JDK 8 nanti:
Gantidependenciesblok dengan :
2. Buat sebuah entitas
Buatl sebuah kelas baru yang diberi nama Word. Kelas ini akan berperan sebagai entitas yang menggambarkan tabel SQLite untuk kata-kata. Tiap atribut dalam kelas akan mewakili sebuah kolom dalam tabel tersebut. Room akan menggunakan atribut-atribut ini untuk membentuk tabel dan menciptakan objek dari setiap baris dalam basis data. Untuk menjadikan Word kelas bermakna dalam konteks database Room, perlu ditambahkan anotasi pada kelas tersebut. Anotasi ini akan mengidentifikasi bagaimana bagian-bagian dari kelas terhubung dengan entri dalam basis data. Room akan memanfaatkan informasi tersebut untuk menghasilkan kode yang dibutuhkan. Berikut adalah contoh implementasinya:
3. Membuat DAO
Objek Akses Data (DAO) memverifikasi SQL saat kompilasi dan menghubungkannya dengan metode tertentu. Di Room DAO, anotasi praktis seperti @Insert digunakan untuk merepresentasikan operasi database yang umum. DAO digunakan oleh Room untuk menyusun API yang bersih untuk kode.
Instruksi:
1. Buat sebuah file kelas baru bernama WordDao.
2. Salin dan tempel kode berikut ke dalam WordDao, serta sesuaikan impor yang diperlukan agar dapat dikompilasi:
4. Kelas LiveData
Di WordDao, ubah tanda tangan metode getAlphabetizedWords() agar yang dikembalikan menjadi LiveData<List<Word>>:
Codelab ini, melacak perubahan data melalui Observer file MainActivity.
5. Tambahkan database Kamar Apa itu database Kamar?
- Room adalah lapisan database di atas database SQLite.
-Room menangani tugas-tugas biasa yang biasa Anda tangani dengan SQLiteOpenHelper.
- Room menggunakan DAO untuk mengeluarkan query ke database-nya.
Buat file kelas bernama WordRoomDatabase dan tambahkan kode ini ke dalamnya:
6. Buat Repositori
Repositori adalah komponen yang bertanggung jawab atas manajemen kueri dan memfasilitasi penggunaan banyak backend. Dalam banyak kasus, Repositori menangani logika untuk menentukan apakah akan mengambil data dari jaringan atau menggunakan data yang disimpan dalam cache di basis data lokal. Pendekatan ini memungkinkan aplikasi untuk memanfaatkan keuntungan dari kecepatan akses ke data lokal serta memastikan keakuratan data dengan memperbarui dari jaringan jika diperlukan. Dengan menggunakan Repositori, pengembang dapat mengelola sumber daya data dengan lebih efisien dan mengimplementasikan strategi caching yang sesuai dengan kebutuhan aplikasi.
Buat file kelas bernama WordRepository dan tempel kode berikut ke dalamnya:
7. Buat Model Tampilan
Peran ViewModel adalah menyediakan data ke antarmuka pengguna (UI) dan bertahan dari perubahan konfigurasi seperti rotasi layar. ViewModel bertindak sebagai pusat komunikasi antara Repositori, yang bertanggung jawab atas manajemen sumber daya data, dan UI. Selain itu, ViewModel juga dapat digunakan untuk berbagi data antar fragmen dalam sebuah aplikasi. Dengan menggunakan ViewModel, pengembang dapat
memisahkan logika bisnis dari UI, meningkatkan pemeliharaan kode, dan membuat aplikasi lebih mudah untuk dipahami dan diuji.
Buat file kelas WordViewModel dan tambahkan kode ini ke dalamnya:
8. Tambahkan tata letak XML
Selanjutnya, kita perlu menambahkan tata letak XML untuk daftar dan item.
Tambahkan layout/recyclerview_item.xml tata letak:
Di layout/activity_main.xml, ganti TextView dengan a RecyclerView dan tambahkan tombol Floating Action Button (FAB) untuk aksi tambah dan aksi hapus. Berikut kode nya :
Tampilan tombol tindakan mengambang (FAB) Anda harus sesuai dengan tindakan yang tersedia, jadi kami ingin mengganti ikon dengan simbol + dan x.
Pertama, kita perlu menambahkan Aset Vektor baru:
- Pilih File > Baru > Aset Vektor . - Klik ikon robot Android pada Ikon :
Telusuri "tambah" dan pilih aset '+'. Klik Oke.
Kemudian, Next.
Konfirmasikan jalur ikon sebagai main > drawable dan klik Selesai untuk menambahkan aset.
Dan juga tambahkan icon seperti dibawah ini.
Masih di layout/activity_main.xml, perbarui FAB untuk menyertakan sumber daya dapat digambar yang baru:
9. Tambahkan RecyclerView
Mulai dengan membuat file baru yang akan menampung file ViewHolder, yang menampilkan file Word. Buat metode pengikatan yang mengatur teks.
Buat kelas WordListAdapter yang diperluas ListAdapter.
Buat DiffUtil.ItemCallback implementasi sebagai kelas statis di WordListAdapter. Ini kodenya:
Tambahkan RecyclerView dalam onCreate() metode MainActivity.
Dalam onCreate() metode setelah setContentView:
10. Isi database
Berikut adalah kode untuk membuat panggilan balik di dalam kelas WordRoomDatabase.
Karena Anda tidak dapat melakukan operasi database Room di thread UI, onCreate()gunakan operasi yang telah ditentukan sebelumnya databaseWriteExecutor untuk mengeksekusi lambda di thread latar belakang. Lambda menghapus isi database, lalu mengisinya dengan dua kata "Halo" dan "Dunia".
11. Tambahkan Aktivitas Kata Baru
Buat Android kosong baru Activity dengan template Aktivitas Kosong:
- Pilih File > Baru > Aktivitas > Aktivitas Kosong - Masukkan NewWordActivity untuk nama Aktivitas.
- Verifikasi bahwa aktivitas baru telah ditambahkan ke Manifest Android.
Perbarui kode untuk aktivitas:
12. Hubungkan dengan data
Langkah terakhir adalah mengaitkan antarmuka pengguna (UI) dengan database dengan cara menyimpan kata-kata baru yang dimasukkan oleh pengguna dan menampilkan konten kata-kata saat ini dari database pada RecyclerView. Untuk menampilkan konten database saat ini, tambahkan pengamat yang mengamati LiveData dalam ViewModel.
Setiap kali data berubah, metode onChanged() dipanggil, yang kemudian memanggil metode setWords() pada adaptor untuk memperbarui cache data adaptor dan menyegarkan daftar yang ditampilkan.
Di MainActivity, buat variabel anggota untuk ViewModel:
Ketika pertama kali memulai aktivitas, ViewModelProviders akan membuat ViewModel.
Bahkan jika aktivitas dihancurkan, misalnya karena perubahan konfigurasi, ViewModel akan tetap ada. Ketika aktivitas dibuat kembali, ViewModelProviders akan mengembalikan ViewModel yang ada dari aktivitas sebelumnya. Untuk informasi lebih lanjut, lihat dokumen tentang ViewModel.
Di onCreate()bawah RecyclerView blok kode, dapatkan a ViewModel dari ViewModelProvider:
Juga di onCreate(), tambahkan pengamat untuk yang LiveData dikembalikan oleh getAlphabetizedWords(). Metode ini onChanged() aktif ketika data yang diamati berubah dan aktivitas berada di latar depan:
Tentukan kode permintaan sebagai anggota MainActivity:
Di MainActivity, tambahkan onActivityResult()kode untuk NewWordActivity.
Jika aktivitas kembali dengan RESULT_OK, masukkan kata yang dikembalikan ke dalam database dengan memanggil insert()metode WordViewModel :
Di MainActivity,mulai NewWordActivity ketika pengguna mengetuk FAB. Di MainActivity onCreate, temukan FAB dan tambahkan onClickListener dengan kode ini:
13. Hasil atau Output
Tampilan awal saat aplikasi dibuka
Tampilan aplikasi saat menambahkan item atau data dengan mengklik tombol (+)
Ketika tombol (x) ditekan dalam aplikasi, tindakan tersebut dimaksudkan untuk menghapus item atau data yang telah dimasukkan sebelumnya, sehingga mengembalikan tampilan aplikasi ke kondisi awal yang kosong seperti saat pertama kali dibuka.