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
view_rv_item.xml
1 |<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
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"
?>
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 :
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
Reviewed by Abdullah sulam
on
20.00
Rating:
Tidak ada komentar: