Sayfalama kitaplığına genel bakış   Android Jetpack'in bir parçasıdır.

Sayfalama kitaplığı, daha büyük bir veri kümesinden yerel depolama alanından veya ağ üzerinden veri sayfaları yüklemenize ve 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ına olanak tanır. Sayfalama kitaplığının bileşenleri, önerilen Android uygulama mimarisine uygun, diğer Jetpack bileşenleriyle sorunsuz bir şekilde entegre olan ve birinci sınıf Kotlin desteği sunan şekilde tasarlanmıştır.

Sayfalama kitaplığını kullanmanın avantajları

Sayfalama kitaplığı aşağıdaki özellikleri içerir:

  • Sayfalandırılmış verileriniz için bellek içi önbelleğe alma. Bu sayede uygulamanız, sayfalı verilerle çalışırken sistem kaynaklarını verimli bir şekilde kullanı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.
  • Kullanıcı, yüklü verilerin sonuna doğru ilerledikçe otomatik olarak veri isteyen yapılandırılabilir RecyclerView adaptörleri.
  • Kotlin coroutine'leri ve akışları, LiveData ve RxJava için birinci sınıf destek.
  • Yenileme ve yeniden deneme özellikleri dahil olmak üzere hata işleme için yerleşik destek.

Geri bildirim gönder

Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni bir kitaplık oluşturmadan önce bu kitaplığın mevcut sorunlarını kontrol edin. Yıldız düğmesini tıklayarak mevcut bir soruna oy verebilirsiniz.

Yeni sorun oluşturma

Geri bildirim gönderme hakkında daha fazla bilgi için Sorun İzleyici belgelerine bakın.

Kurulum

Android uygulamanıza Sayfalandırma bileşenlerini aktarmak için uygulamanızın build.gradle dosyasına aşağıdaki bağımlılıkları ekleyin:

Eski

dependencies {
  def paging_version = "3.3.2"

  implementation "androidx.paging:paging-runtime:$paging_version"

  // alternatively - without Android dependencies for tests
  testImplementation "androidx.paging:paging-common:$paging_version"

  // optional - RxJava2 support
  implementation "androidx.paging:paging-rxjava2:$paging_version"

  // optional - RxJava3 support
  implementation "androidx.paging:paging-rxjava3:$paging_version"

  // optional - Guava ListenableFuture support
  implementation "androidx.paging:paging-guava:$paging_version"

  // optional - Jetpack Compose integration
  implementation "androidx.paging:paging-compose:3.3.2"
}

Kotlin

dependencies {
  val paging_version = "3.3.2"

  implementation("androidx.paging:paging-runtime:$paging_version")

  // alternatively - without Android dependencies for tests
  testImplementation("androidx.paging:paging-common:$paging_version")

  // optional - RxJava2 support
  implementation("androidx.paging:paging-rxjava2:$paging_version")

  // optional - RxJava3 support
  implementation("androidx.paging:paging-rxjava3:$paging_version")

  // optional - Guava ListenableFuture support
  implementation("androidx.paging:paging-guava:$paging_version")

  // optional - Jetpack Compose integration
  implementation("androidx.paging:paging-compose:3.3.2")
}

Kitaplık mimarisi

Sayfalama kitaplığının bileşenleri, uygulamanızın üç katmanında çalışır:

  • Depo katmanı
  • ViewModel katmanı
  • Kullanıcı arayüzü katmanı
Depolama katmanındaki PagingSource veya RemoteMediator bileşenlerinden ViewModel katmanındaki Pager bileşenine sayfalı veri akışlarını gösteren resim.
    Ardından Sayfalandırıcı bileşeni, kullanıcı arayüzü katmanındaki PagingDataAdapter'a bir PagingData akışı gösterir.
Şekil 1. Sayfalama kitaplığının uygulama mimarinize nasıl uyduğunu gösteren bir örnek.

Bu bölümde, her katmanda çalışan sayfalama kitaplığı bileşenleri ve sayfalı verileri yükleyip görüntülemek için birlikte nasıl çalıştıkları açıklanmaktadır.

Depo katmanı

Depo katmanındaki birincil Sayfalama kitaplığı bileşeni PagingSource. 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 Sayfalama kitaplığı bileşeni RemoteMediator'dir. RemoteMediator nesnesi, yerel veritabanı önbelleği içeren bir ağ veri kaynağı gibi katmanlı bir veri kaynağından sayfalama işlemini yönetir.

ViewModel katmanı

Pager bileşeni, PagingSource nesnesine ve PagingConfig yapılandırma nesnesine dayalı olarak reaktif akışlarda sunulan 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, sayfaya bölünmüş verilerin anlık görüntüsünü içeren bir kapsayıcıdır. Bir PagingSource nesnesini sorgulayarak sonucu depolar.

Kullanıcı arayüzü katmanı

Kullanıcı arayüzü katmanındaki birincil Sayfalama kitaplığı bileşeni, sayfaya ayrılmış verileri işleyen bir RecyclerViewadaptörü olan PagingDataAdapter'dir.

Alternatif olarak, kendi özel adaptörünüzü oluşturmak için birlikte verilen AsyncPagingDataDiffer bileşenini kullanabilirsiniz.

Ek kaynaklar

Sayfalama kitaplığı hakkında daha fazla bilgi edinmek için aşağıdaki ek kaynaklara bakın:

Codelab uygulamaları