Sekarang mari kita buat sebuah RecyclerView dengan memanfaatkan fasilitas menu. Langkah pertama adalah dengan membuat resource directory terkait. Resource directory menu secara bawaan tidak disediakan.
Kita harus membuatnya terlebih dahulu dengan klik kanan pada direktori res → new → android resource directory. Setelah muncul dialog box seperti di bawah ini, isikan menu pada field directory name lalu Klik OK untuk menyelesaikannya.
Kemudian klik kanan pada direktori tersebut → new → menu resource file. Beri nama menu_main pada field file name.
Maka hasilnya akan terlihat seperti ini:
Setelah itu, lengkapi kodenya menjadi seperti berikut:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_list"
android:title="@string/list"
app:showAsAction="never" />
<item
android:id="@+id/action_grid"
android:title="@string/grid"
app:showAsAction="never" />
<item
android:id="@+id/action_cardview"
android:title="@string/with_cardview"
app:showAsAction="never" />
</menu>
Dan pada bagian res → values → strings.xml, tambahkan juga string berikut:
<resources>
<string name="app_name">My Application</string>
<string name="heroes_name">Nama Pahlawan</string>
<string name="detail">Detail</string>
<string name="list">List</string>
<string name="grid">Grid</string>
<string name="with_cardview">with CardView</string>
<string name="favorite">Favorite</string>
<string name="share">Share</string>
</resources>
Setelah selesai, saatnya kita pasang menu tersebut di MainActivity dengan menambahkan metode berikut:
public class MainActivity extends AppCompatActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
}
private void showRecyclerList(){
...
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
setMode(item.getItemId());
return super.onOptionsItemSelected(item);
}
public void setMode(int selectedMode) {
switch (selectedMode) {
case R.id.action_list:
showRecyclerList();
break;
case R.id.action_grid:
showRecyclerGrid();
break;
case R.id.action_cardview:
showRecyclerCardView();
break;
}
}
}
Dan untuk mempercantik tampilan, kita akan menambah metode untuk mengubah judul halaman setiap melakukan perubahan bentuk dari RecyclerView dengan menambahkan baris berikut ini
private void setActionBarTitle(String title) {
if (getSupportActionBar() != null) {
getSupportActionBar().setTitle(title);
}
}
dan tambahkan variable ini di atas metode onCreate()
private String title = "Mode List";
Hasil akhir pada bagian setMode menjadi seperti berikut
public void setMode(int selectedMode) {
switch (selectedMode) {
case R.id.action_list:
title = "Mode List";
showRecyclerList();
break;
case R.id.action_grid:
title = "Mode Grid";
showRecyclerGrid();
break;
case R.id.action_cardview:
title = "Mode CardView";
showRecyclerCardView();
break;
}
setActionBarTitle(title);
}
dan juga tambahkan setActionbarTitle pada awal aplikasi berjalan di metode onCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
...
setActionBarTitle(title);
...
}
Jalankan kembali aplikasinya dan sekarang judul halaman akan berubah seiring perubahan bentuk RecyclerView.
Selamat mencoba, terima kasih.