Mungkinkah menggunakan item daftar yang dapat diperluas dengan RecyclerView baru? Suka ExpandableListView?
android
android-recyclerview
Dariusz Rusin
sumber
sumber
Jawaban:
Ini mudah dilakukan dengan LayoutManagers stok, semuanya tergantung pada bagaimana Anda mengelola adaptor Anda.
Saat Anda ingin memperluas bagian, Anda cukup menambahkan item baru ke adaptor Anda setelah header. Ingatlah untuk memanggil notifyItemRangeInserted saat Anda melakukan ini. Untuk menciutkan bagian Anda cukup menghapus item yang relevan, dan memanggil notifyItemRangeRemoved (). Untuk setiap perubahan data yang diberitahukan dengan tepat, tampilan daur ulang akan menganimasikan tampilan. Saat menambahkan item, area yang akan diisi dengan item baru dibuat, dengan item baru memudar. Penghapusan adalah sebaliknya. Yang perlu Anda lakukan selain hal-hal adaptor adalah mengatur gaya tampilan Anda untuk menyampaikan struktur logis kepada pengguna.
Pembaruan: Ryan Brooks sekarang telah menulis artikel tentang cara melakukan ini.
sumber
Dapatkan implementasi kode sampel dari sini
Setel ValueAnimator di dalam onClick dari ViewHolder
Ini kode terakhirnya
sumber
ExpandableListView
", karena konten yang diperluas dalam kasus tersebut adalah daftar itu sendiri dengan item yang berasal dari adaptor. Ini adalah solusi yang merosot dengan hanya 1 item yang diperbolehkan sebagai anak-anak di dalam grup.https://github.com/gabrielemariotti/cardslib
Library ini memiliki implementasi daftar yang dapat diperluas dengan recyclerview (lihat aplikasi demo di bawah "CardViewNative" -> "List, Grid, and RecyclerView" -> "Kartu yang dapat diperluas"). Ini juga memiliki banyak kombinasi kartu / daftar keren lainnya.
sumber
Seseorang mengeluh tentang solusi yang disebutkan di atas tidak dapat digunakan dengan listview sebagai konten yang dapat diperluas. Tetapi ada solusi sederhana: buat listview dan isi listview ini secara manual dengan baris Anda .
Solusi untuk yang malas: ada solusi sederhana jika Anda tidak ingin terlalu banyak mengubah kode. Cukup gunakan adaptor Anda secara manual untuk membuat tampilan dan menambahkannya ke
LinearLayout
.Berikut contohnya:
fungsi pembantu: getThemeReference
kelas helper: ExpandUtils
Kavin Varnan sudah memposting cara menganimasikan tata letak ... Tetapi jika Anda ingin menggunakan kelas saya, silakan melakukannya, saya memposting intinya: https://gist.github.com/MichaelFlisar/738dfa03a1579cc7338a
sumber
recyclerview
dan Anda dapat memperluas / menyembunyikan satu bersarang ini dan menggunakan semua optimisations darirecyclerview
Anda dapat menggunakan ExpandableLayout yang menyukai kotak centang animasi luaskan / ciutkan yang mulus, sehingga Anda dapat menggunakannya sebagai Kotak Centang di ListView dan RecyclerView.
https://github.com/KyoSherlock/ExpandableLayout
sumber
Ini adalah kode contoh untuk apa yang disebutkan oleh @TonicArtos untuk menambah dan menghapus Item dan untuk menganimasikannya saat melakukannya, ini diambil dari contoh RecyclerView Animations dan GitHub
1) Tambahkan Listener di dalam onCreateViewHolder () Anda untuk mendaftar onClick
2) Buat OnClickListener kustom Anda di dalam Adapter Anda
3) Tambahkan addItem () dan deleteItem () Anda
4) Jika RecyclerViewAdapter Anda tidak dalam Aktivitas yang sama dengan Recycler View , teruskan instance recyclerView ke Adapter saat membuat
5) itemList adalah ArrayList berjenis mObject yang membantu mempertahankan status item (Buka / Tutup), nama, jenis Item (subItems / mainItem) dan mengatur Tema berdasarkan nilai
sumber