Paging kitaplığına genel bakış Android Jetpack'in bir parçasıdır.
Paging kitaplığı, yerel depolamadan veya ağ üzerinden daha büyük bir veri kümesindeki veri sayfalarını yükleyip görüntülemenize yardımcı olur. Bu yaklaşım, uygulamanızın hem ağ bant genişliğini hem de sistem kaynaklarını daha verimli kullanmasını sağlar. Paging kitaplığının bileşenleri, önerilen Android uygulama mimarisine uyacak, diğer Jetpack bileşenleriyle sorunsuz bir şekilde entegre olacak ve birinci sınıf Kotlin desteği sağlayacak şekilde tasarlanmıştır.
Paging kitaplığını kullanmanın avantajları
Paging kitaplığı aşağıdaki özellikleri içerir:
- Sayfalandırılmış verileriniz için bellek içi önbelleğe alma. Bu, uygulamanızın sayfalandırılmış verilerle çalışırken sistem kaynaklarını verimli bir şekilde kullanmasını sağlar.
- Uygulamanızın ağ bant genişliğini ve sistem kaynaklarını verimli bir şekilde kullanmasını sağlayan yerleşik istek tekilleştirme.
- Kotlin eş yordamları ve akışları için birinci sınıf destek.
- Yenileme ve yeniden deneme özellikleri de dahil olmak üzere hata işlemeye yönelik yerleşik destek.
Kurulum
Paging bileşenlerini Android uygulamanıza aktarmak için uygulamanızın build.gradle dosyasına aşağıdaki bağımlılıkları ekleyin:
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") }
Modern
dependencies { def paging_version = "3.4.2" implementation "androidx.paging:paging-common:$paging_version" // Jetpack Compose integration implementation "androidx.paging:paging-compose:$paging_version" }
Kitaplık mimarisi
Paging kitaplığının bileşenleri, uygulamanızın üç katmanında çalışır:
- Depo katmanı
ViewModelkatmanı- Kullanıcı arayüzü katmanı
Bu bölümde, her katmanda çalışan Paging kitaplığı bileşenleri ve sayfalandırılmış verileri yüklemek ve görüntülemek için birlikte nasıl çalıştıkları açıklanmaktadır.
Kod deposu katmanı
Depo katmanındaki birincil Paging kitaplığı bileşeni PagingSource'dir. Her bir PagingSource nesnesi, bir veri kaynağını ve bu kaynaktan verilerin nasıl alınacağını tanımlar. Bir PagingSource nesnesi, ağ kaynakları ve yerel veritabanları dahil olmak üzere herhangi bir tek kaynaktan veri yükleyebilir.
Kullanabileceğiniz bir diğer Paging kitaplığı bileşeni RemoteMediator'dir. Bir
RemoteMediator nesnesi, yerel veritabanı önbelleği olan bir ağ veri kaynağı gibi katmanlı bir veri kaynağındaki sayfalama işlemini gerçekleştirir.
ViewModel katmanı
Pager bileşeni, PagingSource nesnesi ve PagingConfig yapılandırma nesnesine dayalı olarak reaktif akışlarda kullanıma sunulan PagingData örnekleri oluşturmak için genel bir API sağlar.
ViewModel katmanını kullanıcı arayüzüne bağlayan bileşen PagingData'dir. PagingData nesnesi, sayfalandırılmış verilerin anlık görüntüsünün kapsayıcısıdır. Bir PagingSource nesnesini sorgular ve sonucu depolar.
Kullanıcı arayüzü katmanı
Birincil Paging UI API'si collectAsLazyPagingItems()'dir. Sayfalandırılmış öğeleri, Compose'un LazyColumn ve LazyRow gibi tembel düzen bileşenleri tarafından kolayca kullanılabilen bir veri listesi olarak gösterir.
androidx.paging:paging-compose kitaplığını ekleyerek, kullanıcı arayüzünün bağdaştırıcı veya farklılaştırma mantığına gerek kalmadan veri yüklemelerine, güncellemelere ve hatalara otomatik olarak tepki vermesini sağlayan Compose ile uyumlu API'leri kullanın. Döndürülen LazyPagingItems değerini LazyColumn içindeki items() öğesine iletmek için Flow<PagingData> üzerinde collectAsLazyPagingItems() uzantı işlevini kullanın.
@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() } } } }
Daha fazla bilgi için Büyük veri kümeleri (sayfalama) başlıklı makaleyi inceleyin.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir.
- Sayfalandırılmış verileri yükleme ve görüntüleme
- Paging 3'e geçiş
- Ağ ve veritabanından sayfa