Penerapan Paging 3 dan Android Room Database

paging 3 dan room database android

Paging 3 merupakan library yang baru saja dirilis pada 5 Mei 2021. Paging ini digunakan untuk mempermudah para developer android saat membuat aplikasi yang akan menampilkan data dalam jumlah banyak.

[powerkit_toc title=”Tutorial paging 3 dan room database :” depth=”2″ min_count=”2″ min_characters=”200″ btn_hide=”false”]

Setting Dependency Paging 3 dan Room

Sebelum memulai tutorial tentang paging3 ini sebaiknya upgrade versi android studio kalian. Jika sudah memiliki android studio versi terbaru buatlah project dengan empty activity. Ada beberapa dependency yang harus ditambahkan pada bagian build gradle.

https://gist.github.com/adityawid/d0b5a35e263b5413681eb74d43b0d104

Room Database

Untuk sumber data yang akan digunakan dalam paging, kita menggunakan Room Database . Pada sample project paging kali ini kita akan menggunakan database untuk movieDB. Penjelasan lengkap tentang Room Database pada android akan disampaikan di tutorial terpisah. Berikut ini adalah class entity , dao dan roomdatabase yang dapat dijadikan contoh.

https://gist.github.com/adityawid/862db45cb7d77f22e400d59c24e3a479

Bila dilihat dari MovieDao , terdapat method getAllFavMovie yang mengembalikan nilai berupa PagingSource. PagingSource inilah yang nantinya akan diolah untuk mendapatkan paging data.

Paging 3

Jika kita menggunakan library paging 3, kita sebagai developer dapat mengatur tipe output yang diinginkan. PagingData yang didapatkan dari dao dapat ditritmen sebagai data flow atau livedata sesuai kebutuhan seperti contoh penerapan paging 3 pada class MovieLocalDataSource.

https://gist.github.com/adityawid/795de16209f892b04f07e574c97a592c

Class Repository dan ViewModel

https://gist.github.com/adityawid/fe72562dcf112f9a7db32a6d34b50e03

Pada class usecase dapat ditambahkan kode sebagai berikut untuk mendapatkan data dari class Repository. Usecase ini yang nantinya akan kita gunakan pada viewmodel.

fun getPagingFavoriteMovieFlow(): Flow<PagingData<Movie>> = repository.getFavMoviesasFlow()
fun getPagingFavoriteMovieLiveData(): LiveData<PagingData<Movie>> = repository.getFavMoviesasLiveData()

PagingViewModel ini kita tambahkan 2 variabel untuk flow dan livedata.

https://gist.github.com/adityawid/c236ad546b30631cae9ebe01cb706681

Setup Ui Paging 3

Sekarang kita sampai di tahap akhir penerapan paging 3 ini yaitu memasang pada ui. Pertama kita tambahkan layout ui yang berisi recyclerview. Pada contoh ini menggunakan dataBinding .

https://gist.github.com/adityawid/230ced82306ae023a822c3c3c9cd92b1

Paging Adapter

Untuk menampilkan data pada recyclerview , kita membutuhkan adapter. Adapter yang kita gunakan menggunakan PagingAdapter dari Paging3.

https://gist.github.com/adityawid/07d161b1c52556e43f80ac3a36e1a66f

Didalam class PagingAdapter terdapat DiffUtil yang digunakan untuk mengetahui apakah ada perbedaan di setiap item data.

https://gist.github.com/adityawid/374812046a7166e23081e8e094093efe

Ditahap akhir ini kita bungkus semua ke activity untuk memanggil viewmodel dan memasukkan data tersebut ke adapter.

android paging 3

Kesimpulan

Paging 3 ini cukup mempermudah developer untuk mengolah data list. Developer bisa memilih menggunakan paging sebagai data flow atau livedata. Selamat mencoba tutorial ini, semoga bermanfaat.