Tutorial Cara Menambahkan Item Baru di RecyclerView Android
Halo semua, malam ini kita masih belajar tentang RecyclerView sebagai bagian dari series tentang membuat Material Design di Android. Di tutorial sebelumnya kita telah belajar tentang cara membuat RecyclerView di Android, mengimplementasikan CardView di dalam RecyclerView, dan yang terakhir mengeset OnClick Listener pada RecyclerView.
Di tutorial terakhir, pada saat item di RecyclerView diklik, maka item
tersebut akan dihapus / diremove dari list item pada RecyclerView itu.
Nah sekarang kebalikannya, kita akan belajar cara menambahkan data baru
ke dalam list RecyclerView.
Pre-Requisites :
Buka file activity_main.xml, dan tambahkan FloatingActionButton pada file xml tersebut. Oh iya, kita juga merubah layoutnya menjadi memakai RelativeLayout
Kemudian kita akan menyiapkan data yang akan ditambahkan, yaitu
berupa ArrayList<String> yang berisi daftar nama-nama. Ketika
FloatingActionButton tadi diklik, maka kita akan mengambil random satu
nama dari ArrayList tersebut, dan menambahkannya ke bagian paling bawah
dari list RecyclerView. Mudah kan logic nya
Buka file MainActivity.java, dan tambahkan ArrayList baru seperti berikut pada method initDataSet() :
Untuk mencapai tujuan itu, kita akan tambahkan satu method add() terlebih dahulu ke dalam file RecyclerViewAdapter.java :
Jika sudah kita akan kembali ke class MainActivity.java, untuk menambahkan FloatingActionButton dan juga mengeset OnClickListener.
Setelah dimodifikasi, maka file MainActivity.java menjadi seperti ini :
Dan file RecyclerViewAdapter menjadi seperti ini :
Jika sudah, bisa langsung jalankan aplikasinya.
That’s all ! Semoga membantu. ? Dan jangan lupa untuk clone project nya sebagai Android Studio module di GitHub saya ya, dengan terlebih dahulu follow dan star project tersebut. ?
Cara Menambahkan Data Baru ke dalam list RecyclerView
Sebenarnya caranya sangat mudah, cuma sebelum kita belajar ada baiknya kalian membaca dan melakukan terlebih dahulu tutorial-tutorial berikut.Pre-Requisites :
- Membuat Project Android Baru di Android Studio
- Tutorial Membuat RecyclerView di Android
- Tutorial Membuat RecyclerView dengan CardView
- Tutorial Set OnClickListener pada RecyclerView
Buka file activity_main.xml, dan tambahkan FloatingActionButton pada file xml tersebut. Oh iya, kita juga merubah layoutnya menjadi memakai RelativeLayout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| <? xml version = "1.0" encoding = "utf-8" ?> android:orientation = "vertical" android:layout_width = "match_parent" android:background = "@color/primary_material_light" android:layout_height = "match_parent" > < android.support.v7.widget.RecyclerView android:layout_below = "@id/toolbar" android:id = "@+id/rv_main" android:layout_width = "match_parent" android:layout_height = "match_parent" android:scrollbars = "vertical" /> < android.support.design.widget.FloatingActionButton android:id = "@+id/fab" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:src = "@drawable/ic_add_white" android:layout_marginBottom = "20dp" android:layout_marginRight = "20dp" android:layout_alignParentBottom = "true" android:layout_alignParentRight = "true" app:fabSize = "normal" /> </ RelativeLayout > |
Buka file MainActivity.java, dan tambahkan ArrayList baru seperti berikut pada method initDataSet() :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| private ArrayList<String> addDataSet; // rest of code ... private void initDataset(){ /** * Tambahkan item ke dataset tambahan * dalam prakteknya bisa bermacam2 * tidak hanya String seperti di kasus ini */ addDataSet.add( "Anna" ); addDataSet.add( "Sofia" ); addDataSet.add( "Emilia" ); addDataSet.add( "Emma" ); addDataSet.add( "Neele" ); addDataSet.add( "Franziska" ); addDataSet.add( "Heike" ); addDataSet.add( "Katrin" ); addDataSet.add( "Katharina" ); addDataSet.add( "Liselotte" ); } |
Untuk mencapai tujuan itu, kita akan tambahkan satu method add() terlebih dahulu ke dalam file RecyclerViewAdapter.java :
1
2
3
4
| public void add( int position, String item) { rvData.add(position, item); notifyItemInserted(position); } |
Jika sudah kita akan kembali ke class MainActivity.java, untuk menambahkan FloatingActionButton dan juga mengeset OnClickListener.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| private FloatingActionButton fab; @Override protected void onCreate( @Nullable Bundle savedInstanceState) { // rest of code ... fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { // menyiapkan integer random dari 0 - 9 int i = new Random().nextInt( 9 - 0 + 1 ); // mengambil nama pada posisi random 0 - 9 String additional = addDataSet.get(i); // memasukkan nama tersebut ke dalam // daftar nama di RecyclerView ((RecyclerViewAdapter)adapter).add(dataSet.size(), additional); // membuat RecyclerView otomatis // scroll ke bawah setelah nama baru ditambahkan rvView.scrollToPosition(dataSet.size()- 1 ); } }); } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
| import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import java.util.ArrayList; import java.util.Random; /** * Created by Herdi_WORK on 15.09.16. */ public class MainActivity extends AppCompatActivity { private RecyclerView rvView; private RecyclerView.Adapter adapter; private RecyclerView.LayoutManager layoutManager; private FloatingActionButton fab; private ArrayList<String> dataSet; private ArrayList<String> addDataSet; @Override protected void onCreate( @Nullable Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_recyclerview); dataSet = new ArrayList<>(); addDataSet = 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); fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { // menyiapkan integer random dari 0 - 9 int i = new Random().nextInt( 9 - 0 + 1 ); // mengambil nama pada posisi random 0 - 9 String additional = addDataSet.get(i); // memasukkan nama tersebut ke dalam // daftar nama di RecyclerView ((RecyclerViewAdapter)adapter).add(dataSet.size(), additional); // membuat RecyclerView otomatis // scroll ke bawah setelah nama baru ditambahkan rvView.scrollToPosition(dataSet.size()- 1 ); } }); } private void initDataset(){ /** * Tambahkan item ke dataset * dalam prakteknya bisa bermacam2 * tidak hanya String seperti di kasus ini */ dataSet.add( "Karin" ); dataSet.add( "Ingrid" ); dataSet.add( "Helga" ); dataSet.add( "Renate" ); dataSet.add( "Elke" ); dataSet.add( "Ursula" ); dataSet.add( "Erika" ); dataSet.add( "Christa" ); dataSet.add( "Gisela" ); dataSet.add( "Monika" ); addDataSet.add( "Anna" ); addDataSet.add( "Sofia" ); addDataSet.add( "Emilia" ); addDataSet.add( "Emma" ); addDataSet.add( "Neele" ); addDataSet.add( "Franziska" ); addDataSet.add( "Heike" ); addDataSet.add( "Katrin" ); addDataSet.add( "Katharina" ); addDataSet.add( "Liselotte" ); } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
| import android.support.design.widget.Snackbar; import android.support.v7.widget.CardView; 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; /** * Created by Herdi_WORK on 15.09.16. */ 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 CardView cvMain; public ViewHolder(View v) { super (v); tvTitle = (TextView) v.findViewById(R.id.tv_title); tvSubtitle = (TextView) v.findViewById(R.id.tv_subtitle); cvMain = (CardView) v.findViewById(R.id.cv_main); } } @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)); // Set onclicklistener pada view tvTitle (TextView) holder.tvTitle.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { remove(name); } }); holder.tvSubtitle.setText( "Frau " + position); // Set onclicklistener pada view cvMain (CardView) holder.cvMain.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Clicked element " +name, Snackbar.LENGTH_LONG).show(); } }); } @Override public int getItemCount() { // menghitung ukuran dataset / jumlah data yang ditampilkan di RecyclerView return rvData.size(); } public void add( int position, String item) { rvData.add(position, item); notifyItemInserted(position); } public void remove(String item) { int position = rvData.indexOf(item); rvData.remove(position); notifyItemRemoved(position); } } |
That’s all ! Semoga membantu. ? Dan jangan lupa untuk clone project nya sebagai Android Studio module di GitHub saya ya, dengan terlebih dahulu follow dan star project tersebut. ?
Komentar
Posting Komentar