Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Recyclerview

Menampilkan set data dalam jumlah besar dalam UI sambil meminimalkan penggunaan memori.
Update Terbaru Rilis Stabil Saat Ini Kandidat Rilis Berikutnya Rilis Beta Rilis Alfa
22 Juli 2020 1.1.0 - - 1.2.0-alpha05

Mendeklarasikan dependensi

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

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

dependencies {
    implementation "androidx.recyclerview:recyclerview:1.1.0"
    // For control over item selection of both touch and mouse driven selection
    implementation "androidx.recyclerview:recyclerview-selection:1.1.0-rc03"
}

Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.

Masukan

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

Membuat terbitan baru

Baca dokumentasi Issue Tracker untuk mengetahui informasi selengkapnya.

Versi 1.2.0

Versi 1.2.0-alpha05

22 Juli 2020

androidx.recyclerview:recyclerview:1.2.0-alpha05 dirilis. Versi 1.2.0-alpha05 berisi commit berikut ini.

Perbaikan Bug

  • Memperbaiki masalah saat RecyclerView hanya memiliki satu item dan difokuskan, fokus maju atau mundur tidak akan memindahkan fokus. (6f36b3)
  • Memperbaiki ArrayIndexOutOfBoundsException di StaggeredGridLayoutManager (49b601, b/122303625, b/74877618, b/160193663, b/36086625)
  • Memperbaiki bug pengukuran di mana dalam keadaan tertentu, RecyclerView tidak menampilkan turunannya secara tidak tepat. (89040c, b/138734786)

Kontribusi Eksternal

  • Terima kasih kepada Kolin Krewinkel atas nama Facebook untuk kontribusinya!

Versi 1.2.0-alpha04

24 Juni 2020

androidx.recyclerview:recyclerview:1.2.0-alpha04 dirilis. Versi 2.3.0-alpha04 berisi commit berikut.

Perubahan API

  • MergeAdapter telah diganti namanya menjadi ConcatAdapter untuk menghindari kebingungan dengan perilaku penggabungan data yang berbeda (c0540c, b/158019211).

Perbaikan Bug

  • Penyempurnaan pada scrolling otomatis saat semua item yang terlihat dihapus (fe8670, b/154124815)

Versi 1.2.0-alpha03

29 April 2020

androidx.recyclerview:recyclerview:1.2.0-alpha03 dirilis. Versi 1.2.0-alpha03 berisi commit berikut ini.

Fitur Baru

  • RecyclerView kini memiliki metode nestedScrollBy yang memungkinkan scroll terprogram yang bekerja sama dengan nested scrolling: (Iba58)

Versi 1.2.0-alpha02

1 April 2020

androidx.recyclerview:recyclerview:1.2.0-alpha02 dirilis. Versi 1.2.0-alpha02 berisi commit berikut.

Ini dan versi yang lebih tinggi dari RecyclerView tidak kompatibel dengan versi ViewPager2 yang lebih rendah. Jika Anda sedang menggunakan androidx.viewpager2:viewpager2:1.0.0 atau yang lebih rendah, pastikan untuk mengupdate ke androidx.viewpager2:viewpager2:1.1.0-alpha01.

Fitur Baru

  • MergeAdapter

    • MergeAdapter: Adaptor RecyclerView baru yang dapat menggabungkan beberapa adaptor secara linear.
    MyAdapter adapter1 = ...;
    AnotherAdapter adapter2 = ...;
    MergeAdapter merged = new MergeAdapter(adapter1, adapter2);
    recyclerView.setAdapter(mergedAdapter);
    

    Untuk contoh di atas, MergeAdapter akan menyajikan item dari adapter1 yang diikuti dengan adapter2.

  • RecyclerView.Adapter Pemulihan keadaan lambat:

    • Menambahkan API baru ke class RecyclerView.Adapter yang memungkinkan Adaptor mengontrol kapan tata letak harus dipulihkan.

    • Misalnya, Anda dapat memanggil:

    myAdapter.setStateRestorationStrategy(StateRestorationStrategy.WHEN_NOT_EMPTY);
    

    agar RecyclerView menunggu hingga Adaptor tidak kosong sebelum memulihkan posisi scroll.

  • CollectionInfo dan CollectionItemInfo tidak akan lagi diisi secara default.

    • Jika Anda menginginkan Layanan Aksesibilitas (Talkback misalnya) untuk terus menunjukkan jumlah dan indeks item kepada pengguna, Anda harus mengisi CollectionInfo dan CollectionItemInfo sendiri.

    • Objek ini tidak lagi diisi dalam framework karena framework tidak dapat menentukan jumlah item yang diterima oleh pengguna (seperti pemisah, header, atau item RecyclerView yang mewakili beberapa item yang diterima).

Perbaikan Bug

  • RecyclerView kini menghindari penjangkaran pada View di luar viewport saat ukuran viewport berubah
  • Memperbaiki bug di DiffUtil yang mungkin menyebabkan kesalahan diff ketika item asli dalam daftar pertama diduplikasi beberapa kali dalam daftar kedua. (b/123376278)

Versi 1.2.0-alpha01

18 Desember 2019

androidx.recyclerview:recyclerview:1.2.0-alpha01 dirilis. Versi 1.2.0-alpha01 berisi commit berikut ini.

Perbaikan bug

  • Memperbaiki masalah kecil dengan FastScroller terkait gambar RTL dan akurasi sentuh (b/143789932, aosp/1130438)
  • Memperbaiki error pada ItemTouchHelper saat dihapus dari RecyclerView saat animasi ItemTouchHelper berjalan (b/140447176, aosp/1167575)

Versi 1.1.0

Versi 1.1.0

20 November 2019

androidx.recyclerview:recyclerview:1.1.0 dirilis. Versi 1.1.0 berisi commit berikut ini.

Perubahan penting sejak versi 1.0.0

  • PagerSnapHelper dan LinearSnapHelper sekarang memperhitungkan padding RecyclerView berapa pun nilai clipToPadding (b/139452422, b/139012032, aosp/1103182, aosp/1106715, aosp/1130728)
  • RecyclerView.setLayoutTransition(LayoutTransition) secara resmi tidak digunakan lagi dan akan memunculkan IllegalArgumentException jika dipanggil dengan nilai bukan null. Gunakan RecyclerView.setItemAnimator(ItemAnimator) sebagai gantinya. (aosp/839414)
  • aosp/723649: RecyclerView sekarang mengimplementasikan NestedScrollingChild3, yang memungkinkannya untuk diberi tahu saat semua induk scroll bersarangnya berhenti menggunakan jarak scroll bersarang. Jika kode developer saat ini menggantikan RecyclerView.onNestedScroll(View, int, int, int, int, int), kode tersebut kemungkinan tidak akan dipanggil lagi, dan RecyclerView.onNestedScroll(View, int, int, int, int, int, int[]) harus diganti.
  • RecyclerView sekarang memiliki atribut gaya default: recyclerViewStyle, yang memungkinkan penetapan gaya default dalam tema Anda
  • API tindakan aksesibilitas ViewCompat tidak akan lagi mengganggu ItemDelegate RecyclerView.
  • LinearLayoutManager.calculateExtraLayoutSpace(RecyclerView.State, int[]) dapat diganti untuk menyesuaikan banyaknya ruang tata letak ekstra yang perlu ditambahkan ke salah satu sisi RecyclerView yang terkait. (aosp/931259)
  • Menambahkan overload smoothScrollBy baru: RecyclerView#smoothScrollBy(@Px int, @Px int, @Nullable Interpolator, int duration), yang memungkinkan Anda menentukan lamanya waktu (dalam milidetik) yang diperlukan animasi. (aosp/952807)

Versi 1.1.0-rc01

23 Oktober 2019

androidx.recyclerview:recyclerview:1.1.0-rc01 dirilis. Versi 1.1.0-rc01 berisi commit berikut ini.

Perbaikan bug

  • Memperbaiki "Aplikasi Tidak Merespons" saat menggantikan RecyclerViewAccessibilityDelegate.ItemDelegate (aosp/1138057, aosp/1133434)

Versi 1.0.0-beta05

9 Oktober 2019

androidx.recyclerview:recyclerview:1.1.0-beta05 dirilis. Versi 1.1.0-beta05 berisi commit berikut ini.

Perubahan API

  • Menindaklanjuti aosp/1106715 dan aosp/1103182, sekarang LinearSnapHelper dan PagerSnapHelper akan menampilkan tampilan yang berada di tengah-tengah area RecyclerView, dikurangi padding, meskipun terdapat nilai clipToPadding. (aosp/1130728)

Perbaikan bug

  • Memperbaiki masalah RecyclerView menghasilkan node aksesibilitas duplikat untuk turunan RecyclerView. (aosp/1130618)
  • Memperbaiki masalah Virtual Accessibility Hierarchy di RecyclerViews tidak berfungsi.
  • Memperbaiki masalah yang menyebabkan ItemDelegate kustom tidak digunakan.

Versi 1.0.0-beta04

5 September 2019

androidx.recyclerview:recyclerview:1.1.0-beta04 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Perbaikan bug

  • PagerSnapHelper dan LinearSnapHelper sekarang memperhitungkan padding RecyclerView berapa pun nilai clipToPadding (b/139452422, b/139012032, aosp/1103182, aosp/1106715)
  • Memperbaiki bug RecyclerView tidak melarang intersep sentuh saat pra-scrolling bersarang menyebabkan NestedScrollingParent men-scroll (b/138668210, aosp/1105373 ). Kondisi ini menguntungkan library seperti ViewPager2.
  • RecyclerView sekarang secara konsisten mengarah ke SCROLL_STATE_DRAGGING sebelum pra-scroll bersarang dikirim (aosp/1105373)
  • Pra-scroll bersarang tidak lagi dilakukan sebelum gestur melebihi touch slop (b/139530818, aosp/1105373)
  • Argumen dx dan dy yang dikirimkan ke pra-scroll bertingkat akan diubah ke nol saat RecyclerView tidak dapat men-scroll ke arah tersebut (aosp/1105373)

Versi 1.1.0-beta03

15 Agustus 2019

androidx.recyclerview:recyclerview:1.1.0-beta03 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Perubahan API

  • RecyclerView sekarang mengirimkan jarak scroll melalui View.onScrollChanged(int l, int t, int oldl, int oldt) sedemikian rupa sehingga layanan aksesibilitas akan diberi tahu tentang perubahan scroll secara akurat. (aosp/1007823)

Perbaikan bug

  • Memperbaiki bug stack overflow terkait RecyclerView dan aksesibilitas. (aosp/1099577)

Versi 1.1.0-beta02

7 Agustus 2019

androidx.recyclerview:recyclerview:1.1.0-beta02 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Fitur baru

  • RecyclerView sekarang memiliki atribut gaya default: recyclerViewStyle, yang memungkinkan penetapan gaya default dalam tema Anda

Perbaikan bug

  • Memperbaiki bug yang menyebabkan RecyclerView tidak melarang pencegatan sentuh saat men-scroll, yang menyebabkan NestedScrollingParent di-scroll. (b/131115697, aosp/1055911)

Versi 1.1.0-beta01

2 Juli 2019

androidx.recyclerview:recyclerview:1.1.0-beta01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Fitur baru

  • RecyclerView sekarang berpartisipasi dalam scroll bersarang jika scroll dimulai melalui peristiwa aksesibilitas. (aosp/973584)

Versi 1.1.0-alpha06

5 Juni 2019

androidx.recyclerview:recyclerview:1.1.0-alpha06 dan androidx.recyclerview:recyclerview-selection:1.1.0-alpha06 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Fitur baru

  • Menambahkan overload smoothScrollBy baru: RecyclerView#smoothScrollBy(@Px int, @Px int, @Nullable Interpolator, int duration), yang memungkinkan Anda menentukan lamanya waktu (dalam milidetik) yang diperlukan animasi. (aosp/952807)

Perubahan API

  • GridLayoutManager dan StaggeredGridLayoutManager tidak lagi otomatis melabeli item rentang penuh sebagai header untuk keperluan aksesibilitas (aosp/969703)
  • Mempertahankan urutan pemilihan (berdasarkan waktu pembuatan) dalam recyclerview-selection (aosp/937279)

Perbaikan bug

  • Memperbaiki bug di mana RecyclerView memunculkan kecepatan yang salah selagi dalam situasi scroll bersarang. (aosp/961642)
  • Menambahkan peningkatan stabilitas ke recyclerview-selection (aosp/960213, aosp/926296)

Versi 1.1.0-alpha05

7 Mei 2019

androidx.recyclerview:recyclerview:1.1.0-alpha05 dan androidx.recyclerview:recyclerview-selection:1.1.0-alpha05 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Fitur baru

  • LinearLayoutManager.calculateExtraLayoutSpace(RecyclerView.State, int[]) dapat diganti untuk menyesuaikan banyaknya ruang tata letak ekstra yang perlu ditambahkan ke salah satu sisi RecyclerView yang terkait. (aosp/931259)

Perubahan API

  • Menambahkan API untuk mengambil DividerItemDecoration drawable (aosp/937282)
  • Menghentikan penggunaan LinearLayout.getExtraLayoutSpace(RecyclerVew.State) dan menggantinya dengan mekanisme baru yang mendukung ruang tata letak tambahan kustom di kedua sisi. Metode baru ini adalah LinearLayout.calculateExtraLayoutSpace(RecyclerView.state, int[]) (aosp/931259)

Perbaikan bug

  • Membersihkan pilihan Gestur (aosp/940781)
  • Mempertahankan urutan pemilihan (berdasarkan waktu pembuatan) (b/128455535)

Versi 1.1.0-alpha04

3 April 2019

androidx.recyclerview:recyclerview:1.1.0-alpha04 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Perbaikan bug

  • Sebelumnya RV OnItemTouchListener tidak dapat mengintersep ACTION_UP, yang mencegah OnItemTouchListener memblokir kode lain untuk merespons ACTION_UP. Masalah ini sudah diperbaiki: (aosp/916137)

Versi 1.1.0-alpha03

13 Maret 2019

androidx.recyclerview:recyclerview:1.1.0-alpha03 dirilis. Daftar lengkap commit yang disertakan dalam versi ini dapat dilihat di sini.

Fitur baru

  • GridLayoutManager: Memilih untuk menggunakan estimasi dimensi scroll bar GridLayoutManager dengan resolusi lebih tinggi (aosp/838836):
    • Menggunakan informasi span guna memperkirakan dimensi scroll bar untuk GridLayoutManager.
    • Untuk mengaktifkan, panggil GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean) yang meneruskan nilai true.
    • Lihat dokumentasi tentang GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean) untuk informasi selengkapnya.

Perbaikan bug

  • Aksesibilitas: Terdapat bug di mana begitu ViewHolder didaur ulang lalu dipulihkan, ItemDelegate yang terkait dengan RecyclerViewAccessibilityDelegate RecyclerView tidak dikaitkan dengan itemView ViewHolder, sehingga mengganggu Aksesibilitas. Masalah ini sudah diperbaiki (aosp/917740).

Versi 1.1.0-alpha02

30 Januari 2019

androidx.recyclerview:recyclerview 1.1.0-alpha02 dirilis.

Perubahan API

  • RecyclerView.setLayoutFrozen(boolean) dan RecyclerView.isLayoutFrozen() tidak digunakan lagi dan digantikan dengan RecyclerView.suppressLayout(boolean) dan RecyclerView.isLayoutSuppressed(). (aosp/839414)
  • RecyclerView.setLayoutTransition(LayoutTransition) secara resmi tidak digunakan lagi dan akan memunculkan IllegalArgumentException jika dipanggil dengan nilai bukan null. (aosp/839414)

Perbaikan bug

  • Memperbaiki bug pada RV di mana SmoothScroller tidak pernah berhenti (aosp/843741)
  • Memperbaiki bug yang menyebabkan SCROLL_STATE_IDLE mungkin tidak dipanggil pada akhir animasi scroll. (aosp/812576)

Versi 1.1.0-alpha01

3 Desember 2018

androidx.recyclerview 1.1.0-alpha01 dan androidx.recyclerview-selection 1.1.0-alpha01 dirilis.

androidx.recyclerview 1.1.0-alpha01

Perubahan API

  • aosp/723649: RecyclerView sekarang mengimplementasikan NestedScrollingChild3, yang memungkinkannya untuk diberi tahu saat semua induk scroll bersarangnya berhenti menggunakan jarak scroll bersarang. Jika kode developer saat ini menggantikan RecyclerView.onNestedScroll(View, int, int, int, int, int), kode tersebut kemungkinan tidak akan dipanggil lagi, dan RecyclerView.onNestedScroll(View, int, int, int, int, int, int[]) harus diganti.

Perbaikan bug

  • Memperbaiki error saat menggunakan TransitionManager untuk menciutkan/meluaskan item di RecyclerView (b/37129527).
  • Memperbaiki bug di mana perilaku RecyclerView.OnItemTouchListener tidak konsisten dengan perilaku onInterceptTouchEvent dan onTouchEvent sistem tampilan (aosp/721235)
  • Memperbaiki beberapa bug kasus ekstrem terkait scroll yang lancar (aosp/729718, aosp/747168, aosp/812576)
  • Memperbaiki strategi snap di PagerSnapHelper untuk menangani tampilan turunan non-standar (aosp/795752)

androidx.recyclerview-selection 1.1.0-alpha01

Perbaikan bug

  • Memperbaiki ConcurrentModificationException saat set data berubah karena penghapusan pilihan.

RecyclerView-Selection Versi 1.1.0

Recyclerview-Selection Versi 1.1.0-rc01

5 Februari 2020

androidx.recyclerview:recyclerview-selection:1.1.0-rc01 dirilis. Versi 1.1.0-rc01 berisi commit berikut ini.

Perbaikan bug

  • Memperbaiki masalah RecyclerView sulit di-scroll dengan pemilihan gestur jika berinteraksi dengan AppBarLayout yang dapat di-scroll (aosp/1193934)

RecyclerView-Selection Versi 1.1.0-beta01

4 Desember 2019

androidx.recyclerview:recyclerview-selection:1.1.0-beta01 dirilis. Versi 1.1.0-beta01 berisi commit berikut ini.

Peningkatan umum dalam stabilitas yang terkait dengan pemeriksaan defensif dan pengelolaan keadaan internal.

Perbaikan bug

Perubahan API

  • Menambahkan parameter jenis kunci pemilihan ke class dan metode jika tidak ditemukan.
  • Metode yang tidak digunakan lagi:
    • SelectionTracker.Builder#withPointerTooltype
    • SelectionTracker.Builder#withGestureTooltype
    • Metode ini ada dengan tujuan bahwa developer mungkin memetakan penunjuk atau perilaku gestur ke jenis alat selain default*. Tujuan ini bagus, tetapi setelah digunakan lebih jauh, ternyata ekspektasi pengguna terkait perilaku input sangat relatif terhadap jenis alat. Selain itu, styli "pasif" adalah jenis alat FINGER sejauh yang berkaitan dengan sistem input Android.
    • Jenis alat default adalah FINGER untuk Gestur dan MOUSE untuk Pointer.