Make You'r own code

Material Design : RecyclerView


Hi Coders , Kali ini saya akan berbagi tentang cara membuat RecylerView. RecyclerView merupakan salah satu elemen dari Android Material Design yang menggantikan ListView dan GridView. RecyclerView sudah sangat terkenal, Sayangya saya baru mempelajarinya pekan ini

Tutorial Membuat Recyclerview

Sebelum kita belajar codenya, 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.

RecyclerView juga mempunyai animasi default sesuai standar Google Material Design saat menambahkan atau menghapus elemen. Sedangkan untuk mengatur posisi item pada list, RecyclerView menggunakan LayoutManagers, dan ada beberapa jenis layout managers yang bisa digunakan.

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.

Elemen terakhir dari RecyclerView adalah Adapter. Adapter berguna untuk mengatur bagaimana data dari data model akan ditampilkan di RecyclerView sebagai sebuah single item. Adapter bisa menerima data dalam bentuk apa saja, tergantung model data yang dipakai. Namun biasanya data tersebut disimpan pada ArrayList.

Adapter juga akan menyiapkan layout yang akan digunakan untuk menampilkan data tersebut per item-nya. Layout dari Adapter kita sendiri yang tentukan, seperti apakah butuh gambar, atau mau ada berapa TextView kita bisa atur. Kemudian kita juga tentukan di Adapter view mana yang ingin diisi dengan data apa, untuk setiap item yang ada di RecyclerView. Misal TextView 1 akan diisi dengan data nama, dan sebagainya.

Enter The Code 

Jika kalian sudah membuat sebuah project aplikasi Android baru di Android Studio, maka buka file build.gradle dan masukkan dependencies seperti berikut :

1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 24
5 | buildToolsVersion '24.0.2'
6 | ...
7 | }
8 | dependencies {
9 | compile fileTree(include: ['*.jar'], dir: 'libs')
10| compile 'com.android.support:design:24.2.1'
11| compile 'com.android.support:support-v4:24.2.1'
12| compile 'com.android.support:appcompat-v7:24.2.1'
13| compile 'com.android.support:palette-v7:24.2.1'
14| compile 'com.android.support:cardview-v7:24.2.1'
15| compile 'com.android.support:recyclerview-v7:24.2.1'
16| }
Langkah berikutnya adalah membuat layout untuk RecyclerView Adapter. Kita akan mendesain sehingga sebuah entry item di RecyclerView akan nampak seperti gambar di atas. Caranya buatlah sebuah file xml baru di res/layout, kemudian isikan kode berikut, file-nya bernama
view_rv_item.xml

1 |<?xml version="1.0" encoding="utf-8"?>
2 |<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 |    android:layout_width="fill_parent"
4 |    android:layout_height="?android:attr/listPreferredItemHeight"
5 |    android:padding="10dip" >
6 |
7 |    <ImageView
8 |        android:id="@+id/icon"
9 |        android:layout_width="wrap_content"
10|        android:layout_height="fill_parent"
11|        android:layout_alignParentBottom="true"
12|        android:layout_alignParentTop="true"
13|        android:layout_marginRight="6dip"
14|        android:contentDescription="TODO"
15|        android:src="@mipmap/ic_launcher" /> 
16|
17|    <TextView
18|        android:id="@+id/tv_subtitle"
19|        android:layout_width="fill_parent"
20|        android:layout_height="26dip"
21|        android:layout_alignParentBottom="true"
22|        android:layout_alignParentRight="true"
23|        android:layout_toRightOf="@id/icon"
24|        android:ellipsize="marquee"
25|        android:singleLine="true"
26|        android:textColor="@android:color/black"
27|        android:text="Description"
28|        android:textSize="12sp" />
29|
30|    <TextView
31|        android:id="@+id/tv_title"
32|        android:layout_width="fill_parent"
33|        android:layout_height="wrap_content"
34|        android:layout_above="@id/tv_subtitle"
35|        android:layout_alignParentRight="true"
36|        android:layout_alignParentTop="true"
37|        android:layout_alignWithParentIfMissing="true"
38|        android:layout_toRightOf="@id/icon"
39|        android:gravity="center_vertical"
40|        android:text="Example application"
41|        android:textColor="@android:color/black"
42|        android:textSize="16sp" />
43| 
45|</RelativeLayout>
Selanjutnya, kita juga akan membuat layout menambahkan elemen RecyclerView pada layout utama, biasanya bernama activity_main.xml, sehingga kodenya akan berubah seperti berikut :
1 |<?xml version="1.0" encoding="utf-8"?>
2 |<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 |    android:orientation="vertical" android:layout_width="match_parent"
4 |    android:layout_height="match_parent">
5 |
6 |    <android.support.v7.widget.RecyclerView
7 |        android:id="@+id/rv_main"
8 |        android:layout_width="match_parent"
9 |        android:layout_height="match_parent"
10|        android:scrollbars="vertical" />
11|
12|</LinearLayout>
Setelah itu, kita akan membuat sebuah Adapter untuk RecyclerView, fungsi Adapter adalah seperti yang sudah dijelaskan di atas. Caranya, buatlah sebuah file .java baru bernama RecyclerViewAdapter.java dan copy pastekan kode berikut :
1 | import android.support.v7.widget.RecyclerView;
2 | import android.view.LayoutInflater;
3 | import android.view.View;
4 | import android.view.ViewGroup;
5 | import android.widget.TextView;
6 |
7 | import java.util.ArrayList;
8 |
9 | /**
10|  * Created by User on 15.09.16.
11| */
12|public class RecyclerViewAdapter extends 13|RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
14|
15|    private ArrayList<String> rvData;
16|
17|    public RecyclerViewAdapter(ArrayList<String> inputData) {
18|       rvData = inputData;
19|    }
20|
21|    public class ViewHolder extends RecyclerView.ViewHolder {
22|
23|        // di tutorial ini kita hanya menggunakan data String untuk tiap item
24|        public TextView tvTitle;
25|        public TextView tvSubtitle;
26|
27|        public ViewHolder(View v) {
28|            super(v);
29|            tvTitle = (TextView) v.findViewById(R.id.tv_title);
30|            tvSubtitle = (TextView) v.findViewById(R.id.tv_subtitle);
31|        }
32|    }
33|
34|    @Override
35|    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
36|        // membuat view baru
37|        View v = 38|LayoutInflater.from(parent.getContext()).inflate(R.layout.view_rv_item, parent, 39|false);
40|        // mengeset ukuran view, margin, padding, dan parameter layout lainnya
41|        ViewHolder vh = new ViewHolder(v);
42|        return vh;
43|    }
44|
45|    @Override
46|    public void onBindViewHolder(ViewHolder holder, int position) {
47|        // - mengambil elemen dari dataset (ArrayList) pada posisi tertentu
48|        // - mengeset isi view dengan elemen dari dataset tersebut
49|        final String name = rvData.get(position);
50|        holder.tvTitle.setText(rvData.get(position));
51|        holder.tvSubtitle.setText("Frau " + position);
52|    }
53|
54|    @Override
55|    public int getItemCount() {
56|        // menghitung ukuran dataset / jumlah data yang ditampilkan di 57|RecyclerView
58|        return rvData.size();
59|    }
60|}
Untuk keterangannya, bisa dibaca pada komentar yang sudah saya tambahkan pada baris kode di atas ya :).

Yang terakhir, kita akan tambahkan kode pada MainActivity.java, yang akan mensuplai Adapter dengan inputan data yang diinginkan, copy pastekan kode berikut pada file MainActivity.java :

1 |import android.os.Bundle;
2 |import android.support.annotation.Nullable;
3 |import android.support.v7.app.AppCompatActivity;
4 |import android.support.v7.widget.LinearLayoutManager;
5 |import android.support.v7.widget.RecyclerView;
6 |
7 |import java.util.ArrayList;
8 |
9 |/**
10| * Created by User on 15.09.16.
11| */
12|public class MainActivity extends AppCompatActivity {
13|
14|   private RecyclerView rvView;
15|   private RecyclerView.Adapter adapter;
16|    private RecyclerView.LayoutManager layoutManager;
17|    private ArrayList<String> dataSet;
18|
19|    @Override
20|    protected void onCreate(@Nullable Bundle savedInstanceState) {
21|        super.onCreate(savedInstanceState);
22|        setContentView(R.layout.activity_recyclerview);
23|        dataSet = new ArrayList<>();
24|        initDataset();
25|
26|        rvView = (RecyclerView) findViewById(R.id.rv_main);
27|        rvView.setHasFixedSize(true);
28| 
29|        /**
30|         * Kita menggunakan LinearLayoutManager untuk list standar
31|         * yang hanya berisi daftar item
32|         * disusun dari atas ke bawah
33|         */
34|        layoutManager = new LinearLayoutManager(this);
35|        rvView.setLayoutManager(layoutManager);
36|
37|       adapter = new RecyclerViewAdapter(dataSet);
38|        rvView.setAdapter(adapter);
39|
40|    }
41|
42|    private void initDataset(){
43|
44|        /**
45|         * Tambahkan item ke dataset
46|         * dalam prakteknya bisa bermacam2
47|         * tidak hanya String seperti di kasus ini
48|         */
49|        dataSet.add("Abzuxz");
50|        dataSet.add("Abdullah");
51|        dataSet.add("Ahya");
52|        dataSet.add("Sidqi");
53|        dataSet.add("Afiq");
54|        dataSet.add("Ali");
55|        dataSet.add("Ammar");
56|        dataSet.add("Zein");
57|        dataSet.add("Khasali");
58|        dataSet.add("Aqhdaq");
59|
60|    }
61|}
Gampang kan??, saya saja menyesal karena baru mempelajarinya pekan ini.untuk tampilan yang lebih bagus bisa ditambahkan card view di view_rv_item.xml nya untuk hasilnya bisa di running sendiri karena jika saya running saya takut laptop saya lelah karena beratnya Virtual Device bawaan Android Studio


Thanks udah mau baca artikel CodesGram. Semoga membantu Coders yang ingin belajar tentang RecyclerView. Salam Coders


















Material Design : RecyclerView Material Design : RecyclerView Reviewed by Abdullah sulam on 20.00 Rating: 5

Tidak ada komentar:

Diberdayakan oleh Blogger.