Ringkasan library Paging Bagian dari Android Jetpack.
Library Paging membantu Anda memuat dan menampilkan halaman data dari set data yang lebih besar dari penyimpanan lokal atau melalui jaringan. Pendekatan ini memungkinkan aplikasi Anda menggunakan bandwidth jaringan dan resource sistem secara lebih efisien. Komponen library Paging didesain agar sesuai dengan arsitektur aplikasi Android yang direkomendasikan, terintegrasi rapi dengan komponen Jetpack lainnya, dan menyediakan dukungan kelas satu untuk Kotlin.
Manfaat menggunakan library Paging
Library Paging mencakup fitur berikut:
- Cache dalam memori untuk data Anda yang dibagi-bagi. Hal ini membantu memastikan bahwa aplikasi Anda menggunakan resource sistem secara efisien saat menangani data yang dibagi-bagi.
- Penghapusan duplikat permintaan bawaan, yang membantu memastikan aplikasi Anda menggunakan bandwidth jaringan dan resource sistem secara efisien.
- Dukungan kelas satu untuk coroutine dan flow Kotlin.
- Dukungan bawaan untuk penanganan error, termasuk kemampuan refresh dan percobaan kembali.
Penyiapan
Untuk mengimpor komponen Paging ke dalam aplikasi Android, tambahkan
dependensi berikut ke file build.gradle aplikasi Anda:
Kotlin
dependencies { val paging_version = "3.4.2" implementation("androidx.paging:paging-common:$paging_version") // Jetpack Compose integration implementation("androidx.paging:paging-compose:$paging_version") }
Groovy
dependencies { def paging_version = "3.4.2" implementation "androidx.paging:paging-common:$paging_version" // Jetpack Compose integration implementation "androidx.paging:paging-compose:$paging_version" }
Arsitektur library
Komponen library Paging beroperasi di tiga lapisan aplikasi Anda:
- Lapisan repositori
- Lapisan
ViewModel - Lapisan UI
Bagian ini menjelaskan komponen library Paging yang beroperasi di setiap lapisan dan cara kerjanya bersama untuk memuat dan menampilkan data yang dibagi-bagi.
Lapisan repositori
Komponen library Paging utama di lapisan repositori adalah
PagingSource. Setiap
objek PagingSource menentukan sumber data dan cara mengambil data dari
sumber tersebut. Objek PagingSource dapat memuat data dari sumber tunggal
mana pun, termasuk sumber jaringan dan database lokal.
Komponen library Paging lain yang dapat Anda gunakan
adalah RemoteMediator. Objek
RemoteMediator menangani paging dari sumber data berlapis, seperti
sumber data jaringan dengan cache database lokal.
Lapisan ViewModel
Komponen Pager menyediakan API
publik untuk membuat instance PagingData yang terekspos dalam
aliran reaktif, berdasarkan objek PagingSource dan objek
konfigurasi PagingConfig.
Komponen yang menghubungkan lapisan ViewModel ke UI adalah
PagingData. Objek PagingData
adalah penampung untuk snapshot data yang telah dipaginasi. Objek ini akan meminta
objek PagingSource dan
menyimpan hasilnya.
Lapisan UI
API UI Paging utama adalah collectAsLazyPagingItems(). Objek ini mengekspos item
yang di-paging sebagai daftar data yang dapat dengan mudah digunakan oleh komponen tata letak lambat Compose, seperti LazyColumn dan LazyRow.
Tambahkan library androidx.paging:paging-compose untuk menggunakan API yang kompatibel dengan Compose yang memungkinkan UI bereaksi secara otomatis terhadap pemuatan, pembaruan, dan error data tanpa memerlukan adapter atau logika perbedaan. Gunakan fungsi ekstensi
collectAsLazyPagingItems() di Flow<PagingData>
untuk meneruskan LazyPagingItems yang ditampilkan ke items() dalam LazyColumn.
@Composable fun MessageList(pager: Pager<Int, Message>) { val lazyPagingItems = pager.flow.collectAsLazyPagingItems() LazyColumn { items( lazyPagingItems.itemCount, key = lazyPagingItems.itemKey { it.id } ) { index -> val message = lazyPagingItems[index] if (message != null) { MessageRow(message) } else { MessagePlaceholder() } } } }
Untuk mengetahui informasi selengkapnya, lihat Set data besar (paging).
Direkomendasikan untuk Anda
- Catatan: teks link ditampilkan saat JavaScript nonaktif
- Memuat dan menampilkan data yang dibagi-bagi
- Bermigrasi ke Paging 3
- Halaman dari jaringan dan database