Dari pengembang android ( Membuat Daftar dan Kartu ):
Widget RecyclerView adalah versi ListView yang lebih canggih dan fleksibel.
Oke, kedengarannya keren, tetapi ketika saya melihat contoh gambar ini, saya benar-benar bingung tentang perbedaan antara keduanya.
Gambar di atas dapat dengan mudah dibuat dengan ListView
menggunakan adaptor khusus.
Jadi, dalam situasi apa yang harus digunakan RecyclerView
?
android
listview
android-recyclerview
Blaze Tama
sumber
sumber
Jawaban:
RecyclerView
dibuat sebagaiListView
peningkatan, jadi ya, Anda dapat membuat daftar terlampir denganListView
kontrol, tetapi menggunakanRecyclerView
lebih mudah karena:Menggunakan kembali sel saat menggulir ke atas / bawah - ini dimungkinkan dengan menerapkan View Holder di
ListView
adaptor, tetapi itu adalah hal opsional, sedangkan diRecycleView
dalamnya itu adalah cara standar penulisan adaptor.Decouples daftar dari wadahnya - sehingga Anda dapat menempatkan item daftar dengan mudah pada waktu berjalan di wadah yang berbeda (linearLayout, gridLayout) dengan pengaturan
LayoutManager
.Contoh:
ItemAnimator
.Ada lebih banyak tentang
RecyclerView
, tetapi saya pikir poin-poin ini adalah yang utama.Jadi, untuk menyimpulkan,
RecyclerView
adalah kontrol yang lebih fleksibel untuk menangani "daftar data" yang mengikuti pola pendelegasian masalah dan hanya menyisakan satu tugas - item daur ulang.sumber
Agar tampilan daftar memiliki kinerja yang baik, Anda perlu menerapkan pola penahan, dan itu mudah berantakan terutama ketika Anda ingin mengisi daftar dengan beberapa jenis tampilan yang berbeda.
The RecyclerView membuat pola ini masuk, membuatnya lebih sulit untuk dikacaukan. Ini juga lebih fleksibel, membuatnya lebih mudah untuk menangani tata letak yang berbeda, yang tidak lurus linear, seperti kisi.
sumber
ListView
adalah nenek moyang untukRecyclerView
. Ada banyak hal yangListView
tidak dilakukan, atau tidak dilakukan dengan baik. Jika Anda mengumpulkan kekuranganListView
dan memecahkan masalah dengan mengabstraksi masalah ke dalam domain yang berbeda, Anda akan berakhir dengan sesuatu seperti tampilan pendaur ulang. Berikut adalah poin masalah utama dengan ListViews:Tidak menerapkan
View
Reuse untuk jenis item yang sama (lihat salah satu adapter yang digunakan dalamListView
, jika Anda mempelajari metode getView, Anda akan melihat bahwa tidak ada yang mencegah programmer membuat tampilan baru untuk setiap baris bahkan jika salah satunya dilewatkan) melaluiconvertView
variabel)Tidak mencegah
findViewById
penggunaan yang mahal (Bahkan jika Anda mendaur ulang tampilan seperti yang disebutkan di atas, mungkin saja devs meneleponfindViewById
untuk memperbarui konten yang ditampilkan dari tampilan anak. Tujuan utamaViewHolder
pola iniListViews
adalah untuk menyimpanfindViewById
panggilan. Namun ini hanya tersedia jika Anda mengetahuinya karena itu bukan bagian dari platform sama sekali)Hanya didukung Pengguliran Vertikal dengan Tampilan yang ditampilkan Baris (Tampilan pendaur ulang tidak peduli di mana pandangan ditempatkan dan bagaimana mereka dipindahkan, itu disarikan ke dalam
LayoutManager
. Seorang Pendaur Ulang dapat mendukung tradisionalListView
seperti yang ditunjukkan di atas, serta hal-hal sepertiGridView
, tetapi itu tidak terbatas pada itu, itu bisa berbuat lebih banyak, tetapi Anda harus melakukan pekerjaan pemrograman kaki untuk mewujudkannya).Animasi untuk ditambahkan / dihapus bukan kasus penggunaan yang dianggap. Itu sepenuhnya terserah Anda untuk mencari tahu bagaimana melakukan ini (bandingkan RecyclerView. Kelas adaptor memberitahukan * metode penawaran v. ListViews untuk mendapatkan ide).
Singkatnya
RecyclerView
adalah cara yang lebih fleksibelListView
, meskipun lebih banyak pengkodean mungkin perlu dilakukan pada bagian Anda.sumber
Jawaban diambil dari Antonio leiva
RecyclerView
memangpowerful view
dariListView
. Untuk lebih jelasnya Anda dapat mengunjungi halaman ini .sumber
Berikut adalah beberapa poin / perbedaan utama antara RecyclerView & ListView. Terima teleponmu dengan bijak.
sumber
Keuntungan utama:
ViewHolder
tidak tersedia secara default diListView
. Kami akan membuat secara eksplisit di dalamgetView()
.RecyclerView
memiliki built-inViewholder
.sumber
Selain perbedaan-perbedaan di atas, beberapa di bawah ini juga lebih sedikit:
RV memisahkan pembuatan tampilan dan pengikatan data untuk dilihat. Di LV, Anda perlu memeriksa apakah convertView adalah nol atau tidak untuk membuat tampilan, sebelum mengikat data ke sana. Jadi, dalam kasus RV, tampilan akan dibuat hanya ketika diperlukan tetapi dalam kasus LV, orang dapat melewatkan pemeriksaan untuk konversi dan akan membuat tampilan setiap kali.
Beralih antara Grid dan Daftar lebih mudah sekarang dengan LayoutManager.
Tidak perlu memberi tahu dan memperbarui semua item, meskipun hanya satu item yang diubah.
Seseorang harus mengimplementasikan view caching dalam kasus LV. Ini disediakan dalam RV secara default. (Ada perbedaan antara tampilan caching dan daur ulang.)
Animasi item yang sangat mudah untuk RV.
sumber
Keuntungan RecyclerView dari pada tampilan daftar:
Berisi ViewHolder secara default.
Animasi mudah.
Mendukung tata letak horizontal, kotak, dan terhuyung
Keuntungan dari listView daripada recyclerView:
Mudah untuk menambahkan pembagi.
Dapat menggunakan inbuilt arrayAdapter untuk daftar sederhana
Mendukung Header dan footer.
Mendukung OnItemClickListner.
sumber
recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL));
setelah melakukan sesuatu sepertirecyclerView = view.findViewById(R.id.feed);
8 Perbedaan Antara RecyclerView dan ListView
1. Pola TampilanPemegang
Pola yang digunakan untuk mengurangi panggilan ke metode findViewById () .
Di ListView, Anda dapat dengan mudah membuat daftar tanpa menggunakan ViewHolder. Tetapi tidak dalam kasus RecyclerView.
2. Adaptor
Keduanya adalah AdapterViews, ya. Ini bekerja berdasarkan kelas adaptor.
Sangat mudah untuk membangun ListView menggunakan adaptor default seperti ArrayAdapter, CursorAdapter tetapi RecyclerView menyediakan kelas RecyclerView.Adapter, Untuk membuat kelas adaptor kustom baru.
Anda tidak dapat menggunakan ArrayAdapter atau adaptor bawaan lainnya dengan RecyclerView.
3. Pengaturan Barang
Saya telah membuat Vertikal ListView dalam kode sederhana dan kurang. Tetapi bagaimana jika kita perlu membuat GridView?
RecyclerView menggunakan LayoutManager untuk mengatur barang-barangnya. Ada 3 kelas LayoutManager.
Animasi
ListView tidak memiliki animasi dasar. Tapi RecyclerView hadir dengan animasi sederhana.
Pembagi
The android: pembagi dan android: dividerHeight atribut atau setDivider (), setDividerHeight () membantu Anda untuk membuat kustom pembagi di ListView.
sejak 25.1.0, Anda bisa menggunakan kelas DividerItemDecoration untuk membuat pembagi sederhana.
Klik Acara
RecyclerView tidak memiliki OnItemClickListener , ya itu sangat menyedihkan. Tetapi mereka memberikan kontrol lebih besar kepada pengembang dengan menyediakan RecyclerView.OnItemTouchListener.
Beri tahu Metode
Anda perlu memanggil metode pemberitahuan * yang tepat untuk melakukan animasi yang benar. RecylcerView memiliki banyak metode * pemberitahuan bila dibandingkan dengan ListView.
sumber
Saya pikir perbedaan utama dan terbesar yang mereka miliki adalah yang
ListView
mencari posisi item saat membuat atau meletakkannya, di sisi lainRecyclerView
mencari jenis item. jika ada item lain yang dibuat dengan jenis yang samaRecyclerView
tidak membuatnya lagi. Itu meminta adaptor pertama dan kemudian meminta untuk daur ulang, jika kolam daur ulang mengatakan "ya saya telah membuat jenis yang mirip dengan itu", makaRecyclerView
jangan mencoba untuk membuat jenis yang sama.ListView
tidak memiliki mekanisme pengumpulan seperti ini.sumber
Menurut pendapat saya
RecyclerView
dibuat untuk mengatasi masalah dengan pola daur ulang yang digunakan dalam tampilan daftar karena itu membuat hidup pengembang lebih sulit. Semua yang bisa Anda tangani kurang lebih. Misalnya saya menggunakan adaptor yang sama untukListView
danGridView
tidak peduli di kedua pandangan tersebutgetView
,getItemCount
,getTypeCount
digunakan sehingga itu sama.RecyclerView
tidak diperlukan jikaListView
denganListAdapter
atauGridView
dengan adapter jaringan sudah bekerja untuk Anda. Jika Anda telah menerapkanViewHolder
pola dalam tampilan daftar dengan benar, maka Anda tidak akan melihat peningkatan besarRecycleView
.sumber
Saya bekerja sedikit dengan
RecyclerView
dan masih lebih sukaListView
.Tentu, keduanya digunakan
ViewHolders
, jadi ini bukan keuntungan.A
RecyclerView
lebih sulit dalam pengkodean.A
RecyclerView
tidak mengandung header dan footer, jadi ini adalah minus.A
ListView
tidak perlu membuat ViewHolder. Dalam kasus di mana Anda ingin memiliki daftar dengan bagian atau subjudul, sebaiknya membuat item independen (tanpa ViewHolder), lebih mudah dan tidak memerlukan kelas yang terpisah.sumber
Jadi, jika efisiensi menjadi perhatian Anda, maka ya, itu ide yang baik untuk mengganti ListView dengan RecyclerView.
sumber
Jawaban sederhana: Anda harus menggunakan RecyclerView dalam situasi di mana Anda ingin menunjukkan banyak item, dan jumlah item itu dinamis. ListView hanya boleh digunakan ketika jumlah item selalu sama dan terbatas pada ukuran layar.
Anda merasa lebih sulit karena Anda berpikir hanya dengan perpustakaan Android dalam pikiran.
Saat ini ada banyak opsi yang membantu Anda membangun adaptor Anda sendiri, membuatnya mudah untuk membangun daftar dan kisi-kisi item dinamis yang dapat Anda pilih, atur ulang, gunakan animasi, pembagi, tambahkan footer, header, dll., Dll.
Jangan takut dan coba RecyclerView, Anda dapat mulai menyukainya membuat daftar 100 item yang diunduh dari web (seperti berita facebook) di ListView dan RecyclerView, Anda akan melihat perbedaan dalam UX (pengguna) pengalaman) ketika Anda mencoba menggulir, mungkin aplikasi uji akan berhenti sebelum Anda bahkan dapat melakukannya.
Saya sarankan Anda untuk memeriksa dua perpustakaan ini untuk membuat adaptor mudah:
FastAdapter oleh mikepenz
FlexibleAdapter oleh davideas
sumber
Info RecyclerView
Itu
RecyclerView
diperkenalkan denganAndroid 5.0 (Lollipop)
. itu termasuk dalam Perpustakaan Dukungan . Dengan demikian, ini kompatibel dengan Android API Level 7.Demikian pula dengan
ListView
,RecyclerView’s
ide utama adalah untuk menyediakan fungsionalitas daftar dengan cara yang ramah kinerja. Bagian 'Pendaur Ulang' dari nama tampilan ini tidak ada di sana secara kebetulan. TheRecyclerView
benar-benar dapat mendaur ulang barang-barang dengan yang saat ini bekerja. Proses daur ulang dilakukan berkat pola yang disebut View Holder .Pro & Kontra dari RecyclerView
Pro:
Cons:
Info ListView
The
ListView
telah ada sejak sangat awal Android. Itu tersedia bahkan diAPI Level 1
dan memiliki tujuan yang sama denganRecyclerView
.Penggunaan ListView sebenarnya sangat sederhana. Dalam aspek ini, tidak seperti penggantinya. Kurva pembelajaran lebih halus daripada kurva untuk RecyclerView. Dengan demikian, lebih mudah dipahami. Kami tidak harus berurusan dengan hal-hal seperti LayoutManager, ItemAnimator atau DiffUtil.
Pro & Kontra dari ListView
Pro:
ExpandableListView
Cons:
sumber
Ada banyak perbedaan antara ListView dan RecyclerView, tetapi Anda harus mengetahui hal-hal berikut secara khusus:
sumber