Paging kitaplığına genel bakış Android Jetpack'in bir parçasıdır.
Paging kitaplığı, yerel depolama alanından veya ağ üzerinden daha büyük bir veri kümesinden veri sayfaları 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 RAM önbelleğe alma. Bu sayede, uygulamanızın sayfalı verilerle çalışırken sistem kaynaklarını verimli bir şekilde kullanması sağlanır.
- Uygulamanızın ağ bant genişliğini ve sistem kaynaklarını verimli bir şekilde kullanmasını sağlayan yerleşik istek tekilleştirme özelliği.
- Kotlin eş yordamları ve akışları için birinci sınıf destek.
- Yenileme ve yeniden deneme özellikleri de dahil olmak üzere hata işleme için 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 bu bileşenlerin sayfalı verileri yükleyip görüntülemek için nasıl birlikte çalıştığı açıklanmaktadır.
Depo katmanı
Depo katmanındaki birincil Paging kitaplığı bileşeni PagingSource'dir. Her PagingSource nesnesi, bir veri kaynağını ve bu kaynaktan verilerin nasıl alınacağını tanımlar. PagingSource nesnesi, ağ kaynakları ve yerel veritabanları dahil olmak üzere herhangi bir kaynaktan veri yükleyebilir.
Kullanabileceğiniz başka bir Paging kitaplığı bileşeni de RemoteMediator'dir. RemoteMediator nesnesi, yerel veritabanı önbelleğine sahip bir ağ veri kaynağı gibi katmanlı bir veri kaynağından sayfalama işlemini gerçekleştirir.
ViewModel katmanı
Pager bileşeni, bir PagingSource nesnesini ve PagingConfig yapılandırma nesnesini temel alarak reaktif akışlarda gösterilen PagingData örnekleri oluşturmak için herkese açık 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ü içeren bir kapsayıcıdır. Bir PagingSource nesnesini sorgular ve sonucu depolar.
Kullanıcı arayüzü katmanı
Birincil Paging UI API'si collectAsLazyPagingItems()'dir. Sayfalanmış öğeleri, Compose'un LazyColumn ve LazyRow gibi geç düzen bileşenleri tarafından kolayca tüketilebilecek bir veri listesi olarak gösterir.
Kullanıcı arayüzünün, adaptörlere veya fark mantığına gerek kalmadan veri yüklemelerine, güncellemelere ve hatalara otomatik olarak tepki vermesini sağlayan Compose uyumlu API'leri kullanmak için androidx.paging:paging-compose kitaplığını ekleyin. Döndürülen LazyPagingItems değerini bir LazyColumn içinde 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) bölümüne bakın.
Sizin için önerilenler
- Not: JavaScript devre dışı bırakıldığında bağlantı metni gösterilir.
- Sayfalı verileri yükleme ve görüntüleme
- Paging 3'e geçiş yapma
- Ağ ve veritabanından sayfa oluşturma