SlideShare a Scribd company logo
1 of 20
Download to read offline
Case Study : Membuat Unlimited
List dari Network dengan Paging
Sidiq Permana
Co founder nbs.dev & Google Developer Expert
Apa yang kita butuhkan?
● Layanan web API.
● Repository yang berfungsi dengan layanan API, untuk abstraksi request
ke layer Network.
● Use Case yang berfungsi Orchestrator untuk manipulasi hasil request
sebelum dikirim ke layer presentasi.
● ViewModel yang menyiapkan permintaan data dari layer presentasi.
● UI, yang menunjukkan representasi visual dari data dalam ViewModel.
Paging
Paging membantu kita memuat data dan menampilkan data-data tersebut
secara bertahap (sebagian kecil dalam satu waktu).
Memuat data secara berkala/seperlunya akan mengurangi penggunaan
sumber daya, terutama Network Bandwidth dan System Resources.
Paging 3
Data Source
Paging Source
● PagingSource, adalah komponen handler yang mengatur besaran jumlah
data yang akan di proses .
ViewModel
● ViewModel akan menghandle permintaan data yang nantinya akan
diteruskan ke layer domain. Kenapa membutuhkan ViewModel? Karena
Paging 3 merupakan komponen yang bersifat lifecycle aware.
UI
● Kelas Paging Source bekerja dengan PagingDataAdapter untuk memuat
item ke dalam RecyclerView.
Paging Library mendukung
arsitektur data berikut:
● Data hanya berasal dari server
backend.
● Disimpan hanya ke database
pada perangkat.
● Kombinasi dari sumber lain,
menggunakan basis data di
perangkat sebagai cache.
How it works
● Untuk pertama kali load data
maka refresh key bernilai null
dan initial load akan dilakukan.
● Setelah request berhasil
dilakukan maka hasilnya akan
ditampilkan dan nilai dari
refresh key menjadi 2 dan
seterusnya
● Proses load more akan berhenti
hingga data sudah di load semua.
Guideline
● Define a arsitekturnya.
● Menambahkan library Paging dan library lain yang dibutuhkan.
● Menerapkan PagingSource pada layer Domain (Interactor).
● Implementasi PageData & PagingDataAdapter.
● Lakukan eksekusi di ViewModel
● Menghubungkan Adapter dengan View/Activity.
Library Utama
● OkHTTP
● Retrofit
● RxJava 2
● Paging 3
● Koin
● Picasso
Dependencies
DataSource
PageData
Config
PageData &
PagingDataAdapter
ViewModel Class
Adapter Class
Activity
Selanjutnya apa?
Contact:
sidiq@nbs.co.id
THANKS!
Follow us: @dicoding

More Related Content

Similar to Dicoding Developer Coaching #29: Android | Case Study: Membuat Unlimited List dari Network dengan Paging

jbptunikompp-gdl-widiantoni-29694-14-24.1010-b.pdf
jbptunikompp-gdl-widiantoni-29694-14-24.1010-b.pdfjbptunikompp-gdl-widiantoni-29694-14-24.1010-b.pdf
jbptunikompp-gdl-widiantoni-29694-14-24.1010-b.pdfIhsanAzhary1
 
Membuat Project Web Service
Membuat Project Web ServiceMembuat Project Web Service
Membuat Project Web ServiceAnnisa Shabrina
 
Pemrosesan paralel untuk kompresi data
Pemrosesan paralel untuk kompresi dataPemrosesan paralel untuk kompresi data
Pemrosesan paralel untuk kompresi dataEmus Kelen
 
Sim, 5, andika fajar, hapzi ali, sistem manajemen database, universitas mercu...
Sim, 5, andika fajar, hapzi ali, sistem manajemen database, universitas mercu...Sim, 5, andika fajar, hapzi ali, sistem manajemen database, universitas mercu...
Sim, 5, andika fajar, hapzi ali, sistem manajemen database, universitas mercu...Andika Fajar
 
Pemrograman Web - Konsep Pemrograman Internet
Pemrograman Web - Konsep Pemrograman InternetPemrograman Web - Konsep Pemrograman Internet
Pemrograman Web - Konsep Pemrograman InternetKuliahKita
 
Cara Akses Database Menggunakan ADO.NET
Cara Akses Database Menggunakan ADO.NETCara Akses Database Menggunakan ADO.NET
Cara Akses Database Menggunakan ADO.NETVeronica Anggraini
 
Tugas4 [ku]-0316-kahfi arif akbar-1012501571
Tugas4 [ku]-0316-kahfi arif akbar-1012501571Tugas4 [ku]-0316-kahfi arif akbar-1012501571
Tugas4 [ku]-0316-kahfi arif akbar-1012501571kahfi ariep akbar
 
Choirul aspnetdb
Choirul aspnetdbChoirul aspnetdb
Choirul aspnetdbPram Monty
 
[Seminar II] Pengembangan Prototipe Geographically-Aware Distributed NoSQL
[Seminar II] Pengembangan Prototipe Geographically-Aware Distributed NoSQL[Seminar II] Pengembangan Prototipe Geographically-Aware Distributed NoSQL
[Seminar II] Pengembangan Prototipe Geographically-Aware Distributed NoSQLInstitut Teknologi Bandung
 
Cara Penggunaan dan Pengoneksian sql jdbc dan odbc
Cara Penggunaan dan Pengoneksian sql jdbc dan odbcCara Penggunaan dan Pengoneksian sql jdbc dan odbc
Cara Penggunaan dan Pengoneksian sql jdbc dan odbcDiah Roshyta Sari
 
TA MySQL Master- Slave Replication
TA MySQL Master- Slave ReplicationTA MySQL Master- Slave Replication
TA MySQL Master- Slave ReplicationOktavianip34
 
Sister_2_Arsitektur.pdf
Sister_2_Arsitektur.pdfSister_2_Arsitektur.pdf
Sister_2_Arsitektur.pdfarif rahman
 
Konsep dasar basis data terpusat,ppde
Konsep dasar basis data terpusat,ppdeKonsep dasar basis data terpusat,ppde
Konsep dasar basis data terpusat,ppdePT.Citra Mulia
 
Pemrograman Bergerak Diskusi 12.pdf
Pemrograman Bergerak Diskusi 12.pdfPemrograman Bergerak Diskusi 12.pdf
Pemrograman Bergerak Diskusi 12.pdfHendroGunawan8
 

Similar to Dicoding Developer Coaching #29: Android | Case Study: Membuat Unlimited List dari Network dengan Paging (20)

jbptunikompp-gdl-widiantoni-29694-14-24.1010-b.pdf
jbptunikompp-gdl-widiantoni-29694-14-24.1010-b.pdfjbptunikompp-gdl-widiantoni-29694-14-24.1010-b.pdf
jbptunikompp-gdl-widiantoni-29694-14-24.1010-b.pdf
 
Membuat Project Web Service
Membuat Project Web ServiceMembuat Project Web Service
Membuat Project Web Service
 
Pemrosesan paralel untuk kompresi data
Pemrosesan paralel untuk kompresi dataPemrosesan paralel untuk kompresi data
Pemrosesan paralel untuk kompresi data
 
Sim, 5, andika fajar, hapzi ali, sistem manajemen database, universitas mercu...
Sim, 5, andika fajar, hapzi ali, sistem manajemen database, universitas mercu...Sim, 5, andika fajar, hapzi ali, sistem manajemen database, universitas mercu...
Sim, 5, andika fajar, hapzi ali, sistem manajemen database, universitas mercu...
 
Pemrograman Web - Konsep Pemrograman Internet
Pemrograman Web - Konsep Pemrograman InternetPemrograman Web - Konsep Pemrograman Internet
Pemrograman Web - Konsep Pemrograman Internet
 
Microservices.pptx
Microservices.pptxMicroservices.pptx
Microservices.pptx
 
Cara Akses Database Menggunakan ADO.NET
Cara Akses Database Menggunakan ADO.NETCara Akses Database Menggunakan ADO.NET
Cara Akses Database Menggunakan ADO.NET
 
Rekweb
RekwebRekweb
Rekweb
 
Tugas4 [ku]-0316-kahfi arif akbar-1012501571
Tugas4 [ku]-0316-kahfi arif akbar-1012501571Tugas4 [ku]-0316-kahfi arif akbar-1012501571
Tugas4 [ku]-0316-kahfi arif akbar-1012501571
 
Basis data (_database_)
Basis data (_database_)Basis data (_database_)
Basis data (_database_)
 
Choirul aspnetdb
Choirul aspnetdbChoirul aspnetdb
Choirul aspnetdb
 
ETS MPPL NEW
ETS MPPL NEWETS MPPL NEW
ETS MPPL NEW
 
ETS MPPL
ETS MPPLETS MPPL
ETS MPPL
 
[Seminar II] Pengembangan Prototipe Geographically-Aware Distributed NoSQL
[Seminar II] Pengembangan Prototipe Geographically-Aware Distributed NoSQL[Seminar II] Pengembangan Prototipe Geographically-Aware Distributed NoSQL
[Seminar II] Pengembangan Prototipe Geographically-Aware Distributed NoSQL
 
Tugas UML
Tugas UMLTugas UML
Tugas UML
 
Cara Penggunaan dan Pengoneksian sql jdbc dan odbc
Cara Penggunaan dan Pengoneksian sql jdbc dan odbcCara Penggunaan dan Pengoneksian sql jdbc dan odbc
Cara Penggunaan dan Pengoneksian sql jdbc dan odbc
 
TA MySQL Master- Slave Replication
TA MySQL Master- Slave ReplicationTA MySQL Master- Slave Replication
TA MySQL Master- Slave Replication
 
Sister_2_Arsitektur.pdf
Sister_2_Arsitektur.pdfSister_2_Arsitektur.pdf
Sister_2_Arsitektur.pdf
 
Konsep dasar basis data terpusat,ppde
Konsep dasar basis data terpusat,ppdeKonsep dasar basis data terpusat,ppde
Konsep dasar basis data terpusat,ppde
 
Pemrograman Bergerak Diskusi 12.pdf
Pemrograman Bergerak Diskusi 12.pdfPemrograman Bergerak Diskusi 12.pdf
Pemrograman Bergerak Diskusi 12.pdf
 

More from DicodingEvent

Developer Coaching #114.pdf
Developer Coaching #114.pdfDeveloper Coaching #114.pdf
Developer Coaching #114.pdfDicodingEvent
 
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...DicodingEvent
 
tantangan menjadi developer di abad 21
tantangan menjadi developer di abad 21tantangan menjadi developer di abad 21
tantangan menjadi developer di abad 21DicodingEvent
 
Mengenalkan augmented reality (ar) pada snapchat
Mengenalkan augmented reality (ar) pada snapchatMengenalkan augmented reality (ar) pada snapchat
Mengenalkan augmented reality (ar) pada snapchatDicodingEvent
 
Membangun Aplikasi Serverless di Platfrom AWS
Membangun Aplikasi Serverless di Platfrom AWSMembangun Aplikasi Serverless di Platfrom AWS
Membangun Aplikasi Serverless di Platfrom AWSDicodingEvent
 
IDCamp X Madrasah: Pengenalan Computational Thinking
IDCamp X Madrasah: Pengenalan Computational ThinkingIDCamp X Madrasah: Pengenalan Computational Thinking
IDCamp X Madrasah: Pengenalan Computational ThinkingDicodingEvent
 
Membuat Produk Digital Terbaik ala Startup Unicorn
Membuat Produk Digital Terbaik ala Startup UnicornMembuat Produk Digital Terbaik ala Startup Unicorn
Membuat Produk Digital Terbaik ala Startup UnicornDicodingEvent
 
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOpsTechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOpsDicodingEvent
 
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CDTechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CDDicodingEvent
 
Membuat Solusi Bermanfaat dengan Programming - Nur Rohman
Membuat Solusi Bermanfaat dengan Programming - Nur RohmanMembuat Solusi Bermanfaat dengan Programming - Nur Rohman
Membuat Solusi Bermanfaat dengan Programming - Nur RohmanDicodingEvent
 
Potensi karier menjadi ios developer di masa depan
Potensi karier menjadi ios developer di masa depanPotensi karier menjadi ios developer di masa depan
Potensi karier menjadi ios developer di masa depanDicodingEvent
 
Id camp x dicoding live : persiapan jadi software engineer hebat 101
Id camp x dicoding live : persiapan jadi software engineer hebat 101Id camp x dicoding live : persiapan jadi software engineer hebat 101
Id camp x dicoding live : persiapan jadi software engineer hebat 101DicodingEvent
 
Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021DicodingEvent
 
Teknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
Teknologi Baru Android di Google I/O 2021 - Andrew KurniadiTeknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
Teknologi Baru Android di Google I/O 2021 - Andrew KurniadiDicodingEvent
 
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...DicodingEvent
 
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...DicodingEvent
 
Pengantar Cloud Computing dengan AWS - Petra Novandi Barus
Pengantar Cloud Computing dengan AWS - Petra Novandi BarusPengantar Cloud Computing dengan AWS - Petra Novandi Barus
Pengantar Cloud Computing dengan AWS - Petra Novandi BarusDicodingEvent
 
Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...
Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...
Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...DicodingEvent
 
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...DicodingEvent
 
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...DicodingEvent
 

More from DicodingEvent (20)

Developer Coaching #114.pdf
Developer Coaching #114.pdfDeveloper Coaching #114.pdf
Developer Coaching #114.pdf
 
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
 
tantangan menjadi developer di abad 21
tantangan menjadi developer di abad 21tantangan menjadi developer di abad 21
tantangan menjadi developer di abad 21
 
Mengenalkan augmented reality (ar) pada snapchat
Mengenalkan augmented reality (ar) pada snapchatMengenalkan augmented reality (ar) pada snapchat
Mengenalkan augmented reality (ar) pada snapchat
 
Membangun Aplikasi Serverless di Platfrom AWS
Membangun Aplikasi Serverless di Platfrom AWSMembangun Aplikasi Serverless di Platfrom AWS
Membangun Aplikasi Serverless di Platfrom AWS
 
IDCamp X Madrasah: Pengenalan Computational Thinking
IDCamp X Madrasah: Pengenalan Computational ThinkingIDCamp X Madrasah: Pengenalan Computational Thinking
IDCamp X Madrasah: Pengenalan Computational Thinking
 
Membuat Produk Digital Terbaik ala Startup Unicorn
Membuat Produk Digital Terbaik ala Startup UnicornMembuat Produk Digital Terbaik ala Startup Unicorn
Membuat Produk Digital Terbaik ala Startup Unicorn
 
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOpsTechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
 
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CDTechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
 
Membuat Solusi Bermanfaat dengan Programming - Nur Rohman
Membuat Solusi Bermanfaat dengan Programming - Nur RohmanMembuat Solusi Bermanfaat dengan Programming - Nur Rohman
Membuat Solusi Bermanfaat dengan Programming - Nur Rohman
 
Potensi karier menjadi ios developer di masa depan
Potensi karier menjadi ios developer di masa depanPotensi karier menjadi ios developer di masa depan
Potensi karier menjadi ios developer di masa depan
 
Id camp x dicoding live : persiapan jadi software engineer hebat 101
Id camp x dicoding live : persiapan jadi software engineer hebat 101Id camp x dicoding live : persiapan jadi software engineer hebat 101
Id camp x dicoding live : persiapan jadi software engineer hebat 101
 
Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021
 
Teknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
Teknologi Baru Android di Google I/O 2021 - Andrew KurniadiTeknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
Teknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
 
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
 
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
 
Pengantar Cloud Computing dengan AWS - Petra Novandi Barus
Pengantar Cloud Computing dengan AWS - Petra Novandi BarusPengantar Cloud Computing dengan AWS - Petra Novandi Barus
Pengantar Cloud Computing dengan AWS - Petra Novandi Barus
 
Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...
Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...
Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...
 
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
 
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
 

Dicoding Developer Coaching #29: Android | Case Study: Membuat Unlimited List dari Network dengan Paging

  • 1. Case Study : Membuat Unlimited List dari Network dengan Paging Sidiq Permana Co founder nbs.dev & Google Developer Expert
  • 2. Apa yang kita butuhkan? ● Layanan web API. ● Repository yang berfungsi dengan layanan API, untuk abstraksi request ke layer Network. ● Use Case yang berfungsi Orchestrator untuk manipulasi hasil request sebelum dikirim ke layer presentasi. ● ViewModel yang menyiapkan permintaan data dari layer presentasi. ● UI, yang menunjukkan representasi visual dari data dalam ViewModel.
  • 3. Paging Paging membantu kita memuat data dan menampilkan data-data tersebut secara bertahap (sebagian kecil dalam satu waktu). Memuat data secara berkala/seperlunya akan mengurangi penggunaan sumber daya, terutama Network Bandwidth dan System Resources.
  • 6. Paging Source ● PagingSource, adalah komponen handler yang mengatur besaran jumlah data yang akan di proses .
  • 7. ViewModel ● ViewModel akan menghandle permintaan data yang nantinya akan diteruskan ke layer domain. Kenapa membutuhkan ViewModel? Karena Paging 3 merupakan komponen yang bersifat lifecycle aware.
  • 8. UI ● Kelas Paging Source bekerja dengan PagingDataAdapter untuk memuat item ke dalam RecyclerView.
  • 9. Paging Library mendukung arsitektur data berikut: ● Data hanya berasal dari server backend. ● Disimpan hanya ke database pada perangkat. ● Kombinasi dari sumber lain, menggunakan basis data di perangkat sebagai cache.
  • 10. How it works ● Untuk pertama kali load data maka refresh key bernilai null dan initial load akan dilakukan. ● Setelah request berhasil dilakukan maka hasilnya akan ditampilkan dan nilai dari refresh key menjadi 2 dan seterusnya ● Proses load more akan berhenti hingga data sudah di load semua.
  • 11. Guideline ● Define a arsitekturnya. ● Menambahkan library Paging dan library lain yang dibutuhkan. ● Menerapkan PagingSource pada layer Domain (Interactor). ● Implementasi PageData & PagingDataAdapter. ● Lakukan eksekusi di ViewModel ● Menghubungkan Adapter dengan View/Activity.
  • 12. Library Utama ● OkHTTP ● Retrofit ● RxJava 2 ● Paging 3 ● Koin ● Picasso
  • 19.