Pertemuan #9: Membuat Daftar Menggunakan RecyclerView
RecyclerView merupakan sebuah widget yang dapat digunakan untuk menampilkan data dalam bentuk sebuah daftar. Dalam catatan kuliah sebelumnya, RecyclerView ini dapat digunakan dalam archetype Stream. RecyclerView dapat dikatakan sebagai versi lebih canggih dan fleksibel dari ListView.
RecyclerView berbeda dari ListView terutama dalam beberapa fitur berikut:
RecyclerView | ListView |
---|---|
Diperlukan ViewHolder dalam Adapter dengan menerapkan RecyclerView.ViewHolder | Tidak memerlukan penggunakan ViewHolder |
Tata letak Item dapat dikustomisasi karena memiliki Layout Manager bertipe linear, grid atau staggered grid | Hanya dapat mengatur item dalam susunan liner vertikal dan tidak dapat dikustomisasi |
Mudah menambahkan animasi untuk item dengan menggunakan RecyclerView.ItemAnimator | Tidak terdapat ketentuan khusus untuk menambahkan animasi ketika menambahkan atau menghapus item |
Membutuhkan implementasi khusus untuk memasok data ke adaptor dengan menggunakan RecyclerView.Adapter | Memiliki adaptor bawaan untuk data berupa Array dan Cursor (ArrayAdapter dan CursorAdapter) |
RecyclerView membutuhkan penggunaan objek RecyclerView.ItemDecoration untuk mengatur dekorasi divider | Untuk menggunakan pembagi antaritem dalam daftar, ListView memiliki properti android:divider |
Hanya memiliki dukungan untuk mengelola event sentuhan dengan RecyclerView.OnItemTouchListener | Memiliki antarmuka AdapterView.OnItemClickListener untuk mengikat peristiwa klik untuk masing-masing item dalam daftar |
Komponen RecyclerView
Dalam RecyclerView terdapat beberapa komponen yang bekerja sama untuk menampilkan data yang kita miliki. Berikut adalah komponen tersebut.
- Data merupakan komponen penting yang menjadi sumber isi dari daftar yang ditampilkan dalam RecyclerView
- RecyclerView sebagai wadah keseluruhan antarmuka pengguna yang menampilkan data dalam bentuk daftar—RecyclerView. Wadah ini nantinya akan diisi View yang disediakan oleh Layout manager. Kita dapat menggunakan salah satu layout manager yang sudah disediakan, yaitu: LinearLayoutManager, GridLayoutManager, dan StaggeredGridLayoutManager.
- Layout untuk sebuah item data—XML file
- Layout manager menghandel pengorganisasian antarmuka dalam view — Recyclerview.LayoutManager
- Adapter bertugas menghubungkan data ke RecyclerView—RecyclerView.Adapter. Adaptor ini juga yang mengatur objek view holder. Dia akan membuat view holder ketika dibutuhkan. Selain itu, adapter juga yang akan mengikat data ke objek view holder dengan cara memanggil metode onBindViewHOlder() untuk mengikat objek view holder ke posisi dari data yang akan ditampilkan.
- View holder merupakan objek yang memiliki informasi dari view dan bertugas untuk menampilkan sebuah item dalam sebuah view. Objek-objek view holder ini adalah instan dari kelas RecyclerView.ViewHolder. RecyclerView hanya menampung dan menampilkan view holder sebanyak konten yang dapat ditampilkan dalam layar ditambah beberapa view holder ekstra.
Menggunakan RecyclerView
Untuk menggunakan RecyclerView, berikut beberapa langkah yang dapat dilakukan:
- Tambahkan dependensi RecyclerView pada berkas app/build.gradle
dependencies {
implementation 'com.android.support:recyclerview-v7:28.0.0'
} - Tambahkan RecyclerView pada layout activity, contoh:
<?xml version="1.0" encoding="utf-8"?>
<!-- A RecyclerView with some commonly used attributes -->
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"/> - Buat layout XML untuk satu item, contoh:
<LinearLayout …>
<TextView
android:id="@+id/word"
style="@style/word_title" />
<Button ... />
</LinearLayout> - Buat sebuah kelas adapater dengan meng-extend RecyclerView.Adapter
- Buat kelas internal dalam kelas adapter dengan meng-extend RecyclerView.ViewHolder
- Pada metode onCreate di activity, definisikan RecyclerView bersama dengan adapter dan layout manager yang akan digunakan, contoh:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Create recycler view. mRecyclerView = findViewById(R.id.recyclerview); // Create an adapter and supply the data to be displayed. mAdapter = new WordListAdapter(this, mWordList); // Connect the adapter with the recycler view. mRecyclerView.setAdapter(mAdapter); // Give the recycler view a default layout manager. mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); }
Comments