Mengenal RecyclerView Android

Mengenal RecyclerView Android

Mengenal RecyclerView Android

Assalamualaikum warohmatullohwabarokatuh,

Kali ini saya akan membahas sedikit tentang materi android, yaitu recyclerview. Sebelum belajar membuat code-nya, ada baiknya kita tahu keunggulan dari RecyclerView sehingga sekarang hampir semua aplikasi Android yang memiliki List menggunakan RecyclerView, bukan GridView atau ListView.

Keunggulan RecyclerView ada dari sisi cara mengcoding-nya atau mengimplementasikannya yang lebih rapi dan terstruktur, sehingga performa dari RecyclerView akan lebih baik jika dibandingkan dengan ListView atau GridView.

Kelas RecyclerView adalah versi ListView yang lebih canggih dan fleksibel. Widget ini adalah kontainer untuk menampilkan rangkaian data besar yang bisa digulir secara sangat efisien dengan mempertahankan tampilan dalam jumlah terbatas.

Gunakan widget RecyclerView bila Anda perlu menampilkan banyak data yang bisa digulir, atau kumpulan data dengan elemen yang berubah pada waktu proses berdasarkan aksi pengguna atau kejadian jaringan.

Kemudian, RecyclerView menggunakan sebuah ViewHolder untuk menyimpan referensi dari view-view yang digunakan pada sebuah item di RecyclerView.

ViewHolder adalah class static yang ada di dalam Adapter yang menyimpan view-view yang akan digunakan untuk menampilkan satu item data. Dengan menggunakan ViewHolder, initinya kalian bisa menghemat waktu dibandingkan memakai findViewById() saat ingin mengupdate list dengan data yang baru.

Diagram di bawah ini menampilkan hubungan antara komponen-komponen recyclerview.

Mengimplementasikan RecyclerView

Mengimplementasikan RecyclerView memerlukan langkah-langkah berikut:

1.Tambahkan dependensi RecyclerView ke file app/build.gradle aplikasi.

dependencies {

compile fileTree(include: ['*.jar'], dir: 'libs')

compile 'com.android.support:design:24.2.1'

compile 'com.android.support:support-v4:24.2.1'

compile 'com.android.support:recyclerview-v7:24.2.1'

}

2.Tambahkan RecyclerView ke layout aktivitas

  <android.support.v7.widget.RecyclerView

        android:id="@+id/rv_main"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:scrollbars="vertical" />

3.Buat file XML layout untuk satu item

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="?android:attr/listPreferredItemHeight"

    android:padding="10dip" >

 


    <ImageView

        android:id="@+id/icon"

        android:layout_width="wrap_content"

        android:layout_height="fill_parent"

        android:layout_alignParentBottom="true"

        android:layout_alignParentTop="true"

        android:layout_marginRight="6dip"

        android:contentDescription="TODO"

        android:src="@mipmap/ic_launcher" />

 


    <TextView

        android:id="@+id/tv_subtitle"

        android:layout_width="fill_parent"

        android:layout_height="26dip"

        android:layout_alignParentBottom="true"

        android:layout_alignParentRight="true"

        android:layout_toRightOf="@id/icon"

        android:ellipsize="marquee"

        android:singleLine="true"

        android:textColor="@android:color/black"

        android:text="Description"

        android:textSize="12sp" />

 


    <TextView

        android:id="@+id/tv_title"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_above="@id/tv_subtitle"

        android:layout_alignParentRight="true"

        android:layout_alignParentTop="true"

        android:layout_alignWithParentIfMissing="true"

        android:layout_toRightOf="@id/icon"

        android:gravity="center_vertical"

        android:text="Example application"

        android:textColor="@android:color/black"

        android:textSize="16sp" />

 


</RelativeLayout>

4.Perluas RecyclerView.Adapter dan implementasikan metode onCrateViewHolder serta onBindViewHolder.

import android.support.v7.widget.RecyclerView;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.TextView;

 


import java.util.ArrayList;



public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {

 


    private ArrayList<String> rvData;

 


    public RecyclerViewAdapter(ArrayList<String> inputData) {

        rvData = inputData;

    }

 


    public class ViewHolder extends RecyclerView.ViewHolder {

 


        // di tutorial ini kita hanya menggunakan data String untuk tiap item

        public TextView tvTitle;

        public TextView tvSubtitle;

 


        public ViewHolder(View v) {

            super(v);

            tvTitle = (TextView) v.findViewById(R.id.tv_title);

            tvSubtitle = (TextView) v.findViewById(R.id.tv_subtitle);

        }

    }

 


    @Override

    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        // membuat view baru

        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_rv_item, parent, false);

        // mengeset ukuran view, margin, padding, dan parameter layout lainnya

        ViewHolder vh = new ViewHolder(v);

        return vh;

    }

 


    @Override

    public void onBindViewHolder(ViewHolder holder, int position) {

        // - mengambil elemen dari dataset (ArrayList) pada posisi tertentu

        // - mengeset isi view dengan elemen dari dataset tersebut

        final String name = rvData.get(position);

        holder.tvTitle.setText(rvData.get(position));

        holder.tvSubtitle.setText("Frau " + position);

    }

 


    @Override

    public int getItemCount() {

        // menghitung ukuran dataset / jumlah data yang ditampilkan di RecyclerView

        return rvData.size();

    }

}

5. Perluas RecyclerView.ViewHolder untuk membuat view holder bagi layout item Anda. Anda bisa menambahkan perilaku klik dengan mengganti metode onClick.

6. Dalam aktivitas Anda, dalam metode onCreate method, buat RecyclerView dan inisialisasi dengan adapter serta pengelola layout.

import android.os.Bundle;

import android.support.annotation.Nullable;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.LinearLayoutManager;

import android.support.v7.widget.RecyclerView;

 


import java.util.ArrayList;

 


public class MainActivity extends AppCompatActivity {

 


    private RecyclerView rvView;

    private RecyclerView.Adapter adapter;

    private RecyclerView.LayoutManager layoutManager;

    private ArrayList<String> dataSet;

 


    @Override

    protected void onCreate(@Nullable Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_recyclerview);

        dataSet = new ArrayList<>();

        initDataset();

 


        rvView = (RecyclerView) findViewById(R.id.rv_main);

        rvView.setHasFixedSize(true);

 


        /**

         * Kita menggunakan LinearLayoutManager untuk list standar

         * yang hanya berisi daftar item

         * disusun dari atas ke bawah

         */

        layoutManager = new LinearLayoutManager(this);

        rvView.setLayoutManager(layoutManager);

 


        adapter = new RecyclerViewAdapter(dataSet);

        rvView.setAdapter(adapter);

 


    }

 


    private void initDataset(){

 


        /**

         * Tambahkan item ke dataset

         * dalam prakteknya bisa bermacam2

         * tidak hanya String seperti di kasus ini

         */

        dataSet.add("Ghapi");

        dataSet.add("Fakhri");

        dataSet.add("Cak pii");

        dataSet.add("bang cucu");

        dataSet.add("Jhon");

        dataSet.add("Farhan");

        dataSet.add("kang labib");

        dataSet.add("Afri");

        dataSet.add("Luky");

 


    }

}

Demikian yang bisa saya share semoga bermanfaat.

Ditulis oleh : Muchammad Alvin Tri Bachtiar (Peserta didik MIT School)

Related posts:

Loading Facebook Comments ...