farizdotid Buruh ketik yang ingin bermanfaat bagi semua orang. | Android Developer, Freelance, Seo Analyst.

CRUD Menggunakan Room Database (ViewModel, Lifecycle, LiveData)

3 min read

CRUD Menggunakan Room Database (ViewModel, Lifecycle, LiveData)

CRUD Menggunakan Room Database (ViewModel, Lifecycle, LiveData) – Halo, pada tutorial pemrograman android kali ini kita akan mempelajari belajar CRUD Menggunakan Room Database. CRUD ini singkatan dari Create, Read, Update, dan Delete. Tidak hanya mempelajari Room Database saja, kamu akan belajar singkat mengenai ViewModel, LifeCycle, dan LiveData. Pada tutorial CRUD Room Database ini kita akan meng-implementasikan paketan dari Android Architecture Components dengan kasus kita membuat aplikasi catat pengeluaran yang dinamai aplikasinya “Pengeluaran Que”.

Pada aplikasi Pengeluaran Que ini terdapat fitur :

  • List pengeluaran ( Read )
  • Tambah pengeluaran ( Create )
  • Edit pengeluaran ( Update )
  • Hapus satu data ( Delete )
  • Hapus semua data ( Delete )

 

Buat Project

Buat project dengan nama Pengeluaran Que lalu pilih empty activity terlebih dahulu

Setup Gradle

Buka file build.gradle (Module:app) lalu tambahkan depedency berikut :

Untuk full source codenya sebagai berikut :

Buka file build.gradle (Project: Pengeluaran Que) lalu tambahkan beberapa kode berikut :

Setup folder

Agar terlihat lebih rapih dan gampang di maintenance buatlah folder sebagai berikut :

  • adapter
  • model
  • -entity
  • utils
  • -database
  • –daos
  • view
  • -add
  • -main
struktur folder - CRUD Menggunakan Room Database (ViewModel, Lifecycle, LiveData)
struktur_folder

Catatan

Folder entity pada folder model : Folder yang berisi class class yang berisi Entity dari Database. Maksudnya setiap kita ingin meng-inisialisasi tabel database maka buat file classnya di dalam folder entity tersebut.

Buat class entity

Pada folder model-entity buatlah sebuah class bernama Pengeluaran. Jadi, entity Pengeluaran ini berisi kolom uid (auto increment), kolom keterangan, dan kolom harga. Nah, kita juga menggunakan Parcelable untuk kebutuhan mengirim data. Untuk kodenya sebagai berikut :

Buat class AppDatabase

Pada folder utils-database buatlah sebuah abstract class dengan nama AppDatabase. Class AppDatabase ini untuk memanage list entity yang sudah kita buat dan juga sebagai jembatan antara class Dao yang sudah kita siapkan. Untuk kodenya sebagai berikut :

Catatan 

  • PengeluaranDao akan merah abaikan saja, karena kita belum mempersiapkan class tersebut.
  • version = 1 : Jika ada penambahan tabel alangkah lebih baiknya version ini +1 dari value sebelumnya agar database pada aplikasi kita melakukan perubahan.

Buat class DatabaseClient

Pada folder utils – database buatlah sebuah class dengan nama DatabaseClient. Class ini khusus untuk meng-inisialisasi Room Database. Untuk kodenya sebagai berikut :

Catatan 

pengeluaranque_db ini adalah nama file database kita. Biasanya class DatabaseClient ini bisa dipanggil pada class App kita ataupun pada saat kita ingin meng-konsumsinya.

Buat class PengeluaranDao

Pada folder utils – database – daos buatlah sebuah interface class dengan nama PengeluaranDao. Class ini berfungsi untuk membuat perintah/fungsi langsung ke database. Misalnya, mengambil semua data ataupun fungsi menambahkan data. Untuk kodenya sebagai berikut :

Catatan 

Disini kita akan menggunakan LiveData agar setiap ada perubahan dia langsung mem-broadcast ke subscribernya dan akan ter-otomatis ke listen oleh activity/fragment kita. Untuk lebih jelasnya apa itu LiveData bisa langsung menuju situs resminya : https://developer.android.com/topic/libraries/architecture/livedata?hl=id

Buat class FunctionHelper

Pada folder utils buatlah sebuah class dengan nama FunctionHelper. Class ini berfungsi untuk menyimpan beberapa fungsi yang sering kita gunakan pada class lain, sebagai contoh disini kita akan membuat fungsi untuk mengubah Integer menjadi format rupiah. Untuk kodenya sebagai berikut :

Persiapan Drawable

Buat drawable baru dengan nama bg_retangle_primary_dark_8 lalu isi dengan kode berikut :

Tambahkan beberapa icon berikut :

  • ic_add_white
  • ic_delete_forever

Caranya klik kanan pada folder drawable > new > vector asset.

Buat layout Item Pengeluaran

Buatlah sebuah layout baru dengan nama item_pengeluaran lalu isi dengan kode berikut :

Buat class PengeluaranAdapter

Pada folder adapter tambahkan class dengan nama PengeluaranAdapter. Pada class ini kita akan melalukan 2 fungsi yaitu onLongTap dan juga click icon deletenya. Untuk kodenyya sebagai berikut :

Catatan

Pada saat kita meng-klik suatu item dengan lama dia akan membuka page edit.

Buat class MainViewModel

Pada folder view-main tambahkan class dengan nama MainViewModel. Class ini berfungsi untuk inisialisasi ViewModel dan LiveData kita. Untuk kodenya sebagai berikut :

Edit layout activity_main.xml

Pada file layout activity_main.xml tambahakn beberapa komponen view berikut :

Class MainActivity

Pada class MainActivity jangan lupa untuk meng-inisialisasi View Binding. Jika kamu belum mengetahui apa itu View Binding bisa menuju artikel berikut Cara Menggunakan View Binding Android Jetpack. Untuk kode fullnya seperti berikut :

Catatan 

  • mainViewModel = ViewModelProviders.of(this).get(MainViewModel.class);

Ini inisialisasi class mana yang menggunakan extend AndroidViewModel

  • mainViewModel.getPengeluarans().observe…

Ini untuk meng-listen hasil dari perubahan yang terjadi

Buat Activity AddDataActivity

Pada folder view-add tambakan empty activity dengan nama AddDataActivity. Activity ini akan berfungsi sebagai membuat dan juga meng-update data.

Layout activity_add_data

Pada file activity_add_data tambahkan komponen view sebagai berikut :

Class AddDataActivity

Pada file AddDataActivity jangan lupa untuk meng-inisialisasi View Binding kita. Untuk kode fullnya sebagai berikut :

Catatan

  • Fungsi loadData() akan digunakan ketika boolean mIsEdit kita true, yang artinya state dalam keadaan ingin update/edit data.
  • Jika AddDataViewModel kita merah abaikan terlbih dahulu karena kita belum mempersiapkan class tersebut.

Buat class AddDataViewModel

Pada folder view – add tambahkan class baru dengan nama AddDataViewModel. Disini kita akan memakai bantuan library Rxjava untuk meng-eksekusi query database kita, karena pada saat eksekusi query perlu dijalankan pada mainthread. Untuk kodenya sebagai berikut :

Jalankan aplikasi

ss-1-CRUD Menggunakan Room Database (ViewModel, Lifecycle, LiveData) ss-2-CRUD Menggunakan Room Database (ViewModel, Lifecycle, LiveData) ss-3-CRUD Menggunakan Room Database (ViewModel, Lifecycle, LiveData)

Dari tutorial pemrograman android kali ini mengenai CRUD Menggunakan Room Database (ViewModel, Lifecycle, LiveData) kamu secara tidak langsung mempelajari hal berikut :

  • CRUD menggunakan Room Database
  • Implementasi LiveData
  • Implementasi ViewModel
  • Implementasi View Binding
  • Implementasi Lifecycle
  • Implementasi RxJava

 

Download Project

Kamu bisa juga men-download project dari link Github berikut : https://github.com/farizdotid/Pengeluaran-Que

 

Sekian tutorial pemrograman android kali ini mengenai CRUD Menggunakan Room Database (ViewModel, Lifecycle, LiveData). Semoga bermanfaat dan seperti biasa jika ingin ada yang ditanyakan bisa langsung berkomenta ya

farizdotid
farizdotid Buruh ketik yang ingin bermanfaat bagi semua orang. | Android Developer, Freelance, Seo Analyst.

4 Replies to “CRUD Menggunakan Room Database (ViewModel, Lifecycle, LiveData)”

  1. gan gimana cara tambah 1 form datepicker di aplikasi ini? tolong sourcenya gan untuk tugas kuliah

Leave a Reply

Your email address will not be published. Required fields are marked *