Bergabunglah bersama kami di ⁠#Android11: The Beta Launch Show pada tanggal 3 Juni!

Paging

Library Paging memudahkan Anda memuat data secara bertahap dan lancar di dalam RecyclerView aplikasi Anda.

Update Terbaru Rilis Stabil Saat Ini Kandidat Rilis Berikutnya Rilis Beta Rilis Alfa
18 Maret 2019 2.1.2 - - -

Mendeklarasikan dependensi

Untuk menambahkan dependensi pada Paging, Anda harus menambahkan repositori Google Maven ke project Anda. Baca repositori Google Maven untuk informasi selengkapnya.

Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:

    dependencies {
      def paging_version = "2.1.2"

      implementation "androidx.paging:paging-runtime:$paging_version" // For Kotlin use paging-runtime-ktx

      // alternatively - without Android dependencies for testing
      testImplementation "androidx.paging:paging-common:$paging_version" // For Kotlin use paging-common-ktx

      // optional - RxJava support
      implementation "androidx.paging:paging-rxjava2:$paging_version" // For Kotlin use paging-rxjava2-ktx
    }
    

Untuk informasi tentang cara menggunakan ekstensi Kotlin, lihat dokumentasi ktx.

Untuk informasi selengkapnya tentang dependensi, lihat Menambahkan Dependensi Build.

Masukan

Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau memiliki ide untuk meningkatkan library ini. Harap lihat masalah yang ada di library ini sebelum Anda membuat yang baru. Anda dapat memberikan suara untuk masalah yang ada dengan mengklik tombol bintang.

Membuat masalah baru

Lihat dokumentasi Issue Tracker untuk mengetahui informasi selengkapnya.

Versi 2.1.2

Versi 2.1.2

18 Maret 2020

androidx.paging:paging:2.1.2 dirilis. Versi 2.1.2 berisi commit berikut pada 2.1.0.

Perbaikan Bug

  • Perbaikan untuk IndexOutOfBoundsException dalam kasus yang jarang terjadi saat mengonversi posisi selama pembatalan.

Masalah rilis

  • Versi Paging 2.1.1 dirilis secara tidak benar dari cabang yang salah dikonfigurasi, mengekspos API dan fungsionalitas yang diimplementasikan sebagian dalam rilis mendatang.

  • Paging 2.1.2 berisi perbaikan pemusatan muatan yang awalnya dirilis pada 2.1.1, tetapi kali ini dipilih secara benar pada rilis 2.1.0. Sebaiknya Anda mengupgrade ke rilis ini, jika saat ini Anda menggunakan 2.1.1.

Versi 2.1.1

Versi 2.1.1

18 Desember 2019

androidx.paging:paging-*:2.1.1 dirilis. Versi 2.1.1 berisi commit berikut.

Perbaikan bug

  • Pemuatan awal yang berdekatan dari PositionalDataSources kini terpusat di sekitar akses terakhir saat placeholder dinonaktifkan

Versi 2.1.0

Versi 2.1.0

25 Januari 2019

Paging 2.1.0 dirilis tanpa perubahan dari versi 2.1.0-rc01.

Versi 2.1.0-rc01

6 Desember 2018

Paging 2.1.0-rc01 dirilis tanpa perubahan dari versi 2.1.0-beta01.

Versi 2.1.0-beta01

1 November 2018

Paging 2.1.0-beta01 dirilis tanpa perubahan dari versi 2.1.0-alpha01.

Versi 2.1.0-alpha01

12 Oktober 2018

Paging 2.1.0-alpha01 mendapatkan dua tambahan utama - page dropping, dan library ekstensi KTX untuk setiap artefak - selain beberapa perubahan API dan perbaikan bug lainnya.

Perubahan API

  • Menambahkan PagedList.Config.Builder.setMaxSize() untuk membatasi jumlah item yang dimuat dalam memori.
  • Menambahkan androidx.paging.Config() sebagai alternatif Kotlin untuk PagedList.Config.Builder
  • Menambahkan androidx.paging.PagedList() sebagai alternatif Kotlin untuk PagedList.Builder
  • Menambahkan DataSourceFactory.toLiveData() sebagai alternatif Kotlin untuk LivePagedListBuilder
  • Menambahkan DataSourceFactory.toObservable() dan toFlowable() sebagai alternatif Kotlin untuk RxPagedListBuilder
  • Menambahkan AsyncPagedListDiffer.addPagedListListener() untuk memantau kapan PagedList ditukar. b/111698609
  • Menambahkan varian PagedListAdapter.onCurrentListChanged() yang meneruskan daftar lama dan baru; varian sebelumnya tidak digunakan lagi.
  • Menambahkan varian PagedListAdapter/AsyncPagedListDiffer.submitList() yang mengambil callback tambahan yang terpicu jika/ketika pagedlist ditampilkan, setelah diffing. Hal ini memungkinkan Anda untuk menyinkronkan pertukaran PagedList dengan update UI lainnya. b/73781068
  • Menambahkan PagedList.getLoadedCount() untuk memberitahukan banyaknya item dalam memori. Perlu diketahui bahwa nilai yang ditampilkan akan selalu sama dengan .size() jika placeholder dinonaktifkan.

Perbaikan Bug

  • Memperbaiki kondisi race saat melakukan diffing jika daftar digunakan kembali b/111591017
  • PagedList.loadAround() sekarang menampilkan IndexOutOfBoundsException jika indeks tidak valid. Sebelumnya, masalah dapat terjadi dengan pengecualian lain yang tidak jelas.
  • Memperbaiki kasus di mana ukuran pemuatan awal yang terlalu kecil dan juga data yang tidak berubah tidak akan menghasilkan pemuatan lebih lanjut. b/113122599

Versi 2.0.0

Versi 2.0.0

1 Oktober 2018

Paging 2.0.0 dirilis dengan satu perbaikan bug.

Perbaikan Bug

  • Memperbaiki error yang dapat terjadi pada scroll yang sangat cepat menggunakan PositionalDataSource dan placeholder b/114635383.

Versi 2.0.0-beta01

2 Juli 2018

Perbaikan Bug

  • Memperbaiki konten yang hilang dalam beberapa kasus tambahan (placeholder dinonaktifkan, PositionalDataSource) b/80149146
  • (Sudah dirilis dalam 1.0.1) Memperbaiki error di mana PagedListAdapter dan AsyncPagedListDiffer gagal menandai peristiwa pemindahan. b/110711937

Dependensi Pre-AndroidX

Untuk Paging versi pra-AndroidX, sertakan dependensi berikut:

dependencies {
        def paging_version = "1.0.0"

        implementation "android.arch.paging:runtime:$paging_version"

        // alternatively - without Android dependencies for testing
        testImplementation "android.arch.paging:common:$paging_version"

        // optional - RxJava support
        implementation "android.arch.paging:rxjava2:$paging_version"
    }
    

Versi 1.0.1

Versi 1.0.1

26 Juni 2018

Paging 1.0.1 dirilis dengan satu perbaikan bug di runtime. Kami sangat menganjurkan penggunaan 1.0.1 untuk mendapatkan stabilitas. Paging RxJava2 1.0.1 juga dirilis, dan identik dengan 1.0.0-rc1.

Perbaikan Bug

  • Memperbaiki error di mana PagedListAdapter dan AsyncPagedListDiffer gagal menandai peristiwa pemindahan. b/110711937

Versi RxJava2 1.0.0

Versi RxJava2 1.0.0-rc1

16 Mei 2018

Paging RxJava2 1.0.0-rc1 berpindah ke kandidat rilis tanpa perubahan dari rilis alfa awal.

Versi 1.0.0

Versi 1.0.0-rc1

19 April 2018 Kandidat Rilis Paging

Kami tidak memiliki masalah umum atau fitur baru lagi yang dijadwalkan untuk rilis Paging 1.0.0. Silakan upgrade project Anda untuk menggunakan 1.0.0-rc1 dan bantu kami melakukan uji banding agar dapat merilis 1.0.0 yang padu.

Tidak ada perubahan dalam rilis ini, semuanya sama dengan versi 1.0.0-beta1.

Versi 1.0.0-beta01

5 April 2018

Paging akan berada dalam versi beta untuk waktu yang singkat sebelum menjadi kandidat rilis. Kami tidak merencanakan perubahan API lagi untuk Paging 1.0, dan batasan untuk setiap perubahan API sangat tinggi.

Dukungan RxJava2 alfa untuk Paging dirilis sebagai modul opsional terpisah (android.arch.paging:rxjava2:1.0.0-alpha1) dan akan diberi versi sementara secara terpisah sampai stabil.

Library baru ini memberikan alternatif RxJava2 untuk LivePagedListBuilder, yang mampu merancang Observable dan Flowable, dengan menggunakan Scheduler alih-alih Executor:

Kotlin

    val pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50)
            .setFetchScheduler(myNetworkScheduler)
            .buildObservable()
    

Java

    Observable<PagedList<Item>> pagedItems =
            RxPagedListBuilder(myDataSource, /* page size */ 50)
                    .setFetchScheduler(myNetworkScheduler)
                    .buildObservable();
    

Fitur Baru

  • RxPagedListBuilder ditambahkan melalui artefak android.arch.paging:rxjava2 baru.

Perubahan API

  • Perubahan API untuk memperjelas peran eksekutor dalam builder:

    • Mengganti nama setBackgroundThreadExecutor() menjadi setFetchExecutor() (dalam PagedList.Builder dan LivePagedListBuilder)

    • Mengganti nama setMainThreadExecutor() menjadi setNotifyExecutor() (dalam PagedList.Builder).

  • Memperbaiki anggota PagedList.mCallbacks menjadi pribadi.

Perbaikan Bug

  • LivePagedListBuilder memicu pemuatan PagedList awal pada eksekutor yang ditentukan, bukan kumpulan thread IO Komponen Arch.

  • Memperbaiki perilaku pembatalan dalam wrapper DataSource internal (yang digunakan untuk mengimplementasikan DataSource.map, juga pemuatan PositionalDataSource yang dinonaktifkan placeholder). b/77237534

Versi 1.0.0-alpha7

21 Maret 2018

Paging 1.0.0-alpha7 dirilis bersama Lifecycle 1.1.1. Karena Paging alfa7 bergantung pada pemindahan class Function sebagaimana disebutkan di atas, Anda harus mengupdate dependensi lifecycle:runtime ke android.arch.lifecycle:runtime:1.1.1.

Paging alpha7 direncanakan menjadi rilis final sebelum Paging mencapai beta.

Perubahan API

  • Objek DataSource.LoadParams sekarang memiliki constructor publik dan objek DataSource.LoadCallback sekarang abstrak. Hal ini memungkinkan penggabungan DataSource atau pengujian DataSource secara langsung dengan callback palsu. b/72600421
  • Mapper untuk DataSource dan DataSource.Factory
    • map(Function<IN,OUT>) memungkinkan Anda untuk mentransformasi, menggabungkan, atau mendekorasi hasil yang dimuat oleh DataSource.
    • mapByPage(<List<IN>,List<OUT>>) memungkinkan tindakan yang sama untuk batch processing (misalnya, jika item yang dimuat dari SQL perlu mengkueri database terpisah, hal tersebut dapat dilakukan sebagai batch.)
  • PagedList#getDataSource() ditambahkan sebagai metode kemudahan b/72611341
  • Semua class yang tidak digunakan lagi telah dihapus dari API, termasuk sisa-sisa dari paket recyclerview.extensions dan LivePagedListProvider.
  • DataSource.Factory diubah dari antarmuka menjadi class abstrak guna memungkinkan fungsi pemetaan.

Perbaikan Bug

  • Mengubah Builder menjadi final. b/70848565
  • Memperbaiki implementasi DataSource Room untuk menangani kueri multi-tabel - perbaikan ini disertakan dalam Room 1.1.0-beta1, lihat di atas.
  • Memperbaiki bug di mana BoundaryCallback.onItemAtEndLoaded tidak dipanggil untuk PositionalDataSource jika placeholder diaktifkan dan ukuran total merupakan kelipatan persis dari ukuran halaman.

Versi 1.0.0-alpha5

22 Januari 2018

Perbaikan Bug

  • Perbaikan pemuatan halaman saat placeholder dinonaktifkan b/70573345
  • Logging tambahan untuk melacak bug IllegalArgumentException b/70360195 (dan perbaikan sisi Room spekulatif)
  • Perbaikan kode contoh Javadoc b/70411933, b/71467637