Memanfaatkan RecyclerView untuk Data Besar pada Aplikasi Android

Custom Recycler View Android Studio

Recycler View adalah salah satu komponen pada Android Studio yang memungkinkan aplikasi mampu menampung ribuan bahkan ratusan ribu data tanpa mengalami lag atau hang pada aplikasi. RecyclerView lebih cocok digunakan untuk menampung data yang banyak dan selalu berubah-ubah.

Mungkin bagi kalian yang masih bingung memilih antara RecyclerView VS ListView?
Karena pada dasarnya keduanya sama-sama menampilkan data. Tapi semenjak Google meluncurkan pendekatan secara Material Design, RecyclerView adalah pilihan utama dan wajib digunakan untuk tujuan diatas. Hal ini merujuk pada pernyataan Google yang menyebutkan bahwa Widget RecyclerView adalah versi yang lebih canggih dan fleksibel daripada ListView.

[ads id="ads1"]

Perbedaan RecyclerView dan ListView

ListView sudah lama diperkenalkan sejak Android SDK API 1. Penggunaannya relatif mudah dan untuk menampung data juga lumayan lancar. Sayangnya, untuk menampung data dalam jumlah besar, widget ini menjadi kurang smooth ketika melakukan scrolling data secara vertikal.

Semenjak Android Lollipop diluncurkan dan memperkenalkan widget RecyclerView, masalah diatas telah teratasi dengan baik jika menggunakan RecyclerView.

1. ViewHolder

Perbedaan mendasar lainnya antara RecyclerView VS ListView adalah pada ViewHolder. Jika pada widget ListView, ViewHolder dapat diabaikan penggunaannya, sebaliknya pada widget RecyclerView, ViewHolder bersifat mutlak dan wajib adanya. Inilah yang menjadi kunci dasar mengapa RecyclerView lebih fleksibel dan powerfull daripada ListView. Karena objek data akan di daur ulang pada ViewHolder bukan pada object RecyclerView nya.

2. LayoutManager

Disamping ViewHolder, dengan menggunakan RecyclerView kita diberikan kemudahan untuk menyesuaikan tampilan (customize display) dengan desain yang kita inginkan.

Beberapa desain layout yang dapat diaplikasikan pada RecyclerView misalnya :

3. DividerItemDecoration

Jika pada ListView kita harus mendefinisikan dan mencari sendiri sendiri baris pembatas untuk menciptakan sebuah garis/pembatas antar item. Pada RecyclerView hal ini mudah diaplikasikan dengan cara menambahkan DividerItemDecoration pada RecyclerView.

4. ItemAnimator

Method ini digunakan untuk menambahkan animasi pada item RecyclerView ketika item bertambah maupun berkurang.

RecyclerView.ItemAnimator Example

5. Notifying data adapter

Notifying data adapter menjadi salah satu kelebihan RecyclerView karena akan sangat berguna ketika item bertambah maupun berkurang karena developer tidak perlu lagi melakukan reload data secara penuh.

Insert item in recyclerview
Delete item in recyclerview
Update item in recyclerview


[ads id="ads2"]

Contoh Resource Layout RecyclerView

Berikut salah satu contoh resource layout untuk membuat recyclerview. Contoh berikut digunakan untuk menampilkan daftar data secara vertikal seperti yang umum digunakan :

Resource Linear Layout RecyclerView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:id="@+id/item_list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:padding="5dp"
            android:background="@drawable/bg_white_border_bottom"
            android:orientation="horizontal">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:orientation="vertical">
                <TextView
                    android:id="@+id/item_date"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:layout_marginTop="8dp"
                    android:layout_marginBottom="0dp"
                    android:singleLine="true"
                    android:text="Title"
                    android:ellipsize="end"
                    android:textColor="@color/colorPrimaryDark"
                    android:textSize="15sp"
                    android:textStyle="bold" />
                <TextView
                    android:id="@+id/item_desc"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:text="Description"
                    android:ellipsize="end"
                    android:textSize="15sp" />
            </LinearLayout>
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="5dp"
                android:layout_marginBottom="5dp"
                android:orientation="vertical">
                <ImageView
                    android:id="@+id/btnDelete"
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:layout_gravity="end"
                    android:clickable="true"
                    app:srcCompat="@android:drawable/ic_menu_delete"/>
                <TextView
                    android:id="@+id/item_amount"
                    android:text="Badge"
                    android:textStyle="bold"
                    android:layout_gravity="right"
                    android:textColor="@color/successDisabled"
                    android:textSize="16sp"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="0dp" />
            </LinearLayout>
        </LinearLayout>
    </androidx.cardview.widget.CardView>
</LinearLayout>


Contoh resource berikut digunakan untuk menampilkan daftar data secara grid seperti pada menu utama :

Resource Grid RecyclerView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridMenu_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:padding="5dp">
    <ImageView
        android:id="@+id/gridImage"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_gravity="center|center_horizontal"
        android:layout_marginTop="10dp"
        android:src="@android:drawable/ic_menu_gallery" />
    <TextView
        android:id="@+id/gridTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="10dp"
        android:textAlignment="center"
        android:text="Title"
        android:textSize="12sp"
        android:textColor="@color/primary"
        android:gravity="center|center_horizontal" />
</LinearLayout>


Ya cukup sekian mengenai perkenalan dengan RecyclerView pada Android Studio. Admin hanya membahas sedikit mengenai fungsi dan kegunaan, juga kelebihan dari widget RecyclerView. Untuk tutorial cara penggunaannya insya Allah nanti akan dibahas di lain kesempatan.

Semoga informasi ini bermanfaat untuk kita. Jangan lupa jika tinggalkan komentar untuk semua pertanyaan yang berkaitan dengan artikel.

0/Post a Comment/Comments

Lebih baru Lebih lama