Cara Membuat Pencarian SearchView pada Toolbar Android
Assalamualaikum Warahmatullahi Wabarakatuh.
SearchView adalah salah satu komponen widget yang digunakan untuk mencari suatu data dari list atau sekumpulan data didalam aplikasi. SearchView akan menerima, (query) dari user ketika melakukan pencarian dan akan menampilkan tampilan hasil pencarian, ke dalam bentuk view, contoh seperti pada TextView, ListView atau RecyclerView dan masih banyak lagi.
Pada tutorial ini kia akan belajar cara membuat SearchView dan menerapkannya pada Toobar. Toolbar adalah sebuah komponen bagian dari material design, merupakan pengganti kelanjutan dari versi terdahulu yaitu Action Bar. SearchView dapat memudahkan user/pengguna untuk mencari suatu data didalam database aplikasi.
Materi lainnya yang direkomenasikan:
- Belajar Membuat Style Material Design di Android Studio
- Cara Menghilangkan Title Bar pada Activity Android Studio
- Cara Membuat Custom Toolbar Material Design
A. Menyiapkan SearchView dan Membuat Menu
1) Pertama kita akan membuat sebuah icon search, yang nantinya akan kita terapkan pada Toolbar. Klik kalan pada direktori res > new > Image Asset.
1) Pertama kita akan membuat sebuah icon search, yang nantinya akan kita terapkan pada Toolbar. Klik kalan pada direktori res > new > Image Asset.
3) Pilih gambar Icon Search pada kategori Action, lalu klik OK..
4) Berikutnya, buat sebuah menu ActionBar untuk kita terapkan pada Toolbar. Caranya klik kanan pada direktori res > new > Android resource file.
1) Untuk membuat Toolbar, kita perlu menghilangkan TitleBar/ActionBar bawaannya terlebih dahulu, pertama kita akan mengedit stylenya, dengan cara buka file style.xml yanag berada pada direktori res > values > style.xml.
Saya sarankan, kalian edit menjadi seperti berikut ini:
Nantinya, style AppTheme.NoActionBar akan kita terapkan pada MainActivity, lalu AppTheme.AppBarOverlay dan AppTheme.PopupOverlay akan kita terapkan pada Toolbar.
2) Buka file AndroidManifest.xml, tambahkan AppTheme.NoActionBar pada MainActivivty, seperti ini:
Edit kode xml pada layout toolbar, seperti berikut ini:
Pertama kita menginisialisasi Toolbar menggunakan fungsi setSupportActionBar().
Pada method onCreateOptionsMenu(), kita mendefinisikan menu yang sudah kita buat tadi, menggunakan fungsi getMenuInflater().inflate().
Setelah itu, kita menginisialisasi MenuItem yang akan digunakan sebagai SearchView, dengan menggunakan funsi setOnQueryTextListener(), fungsi ini digunakan untuk memprses permintaan data (query) dari user.
Didalm fungsi tersebut terdapat sebuah method. bernama onQueryTextSubmit(), yang dijalankan ketika user, mengsubmit data pada SearchView, pada contoh ini, kita menampilkan hasilnya pada TextView dan Toast.
Demo:
Terakhir, sesuikan warna atau style dari icon tersebut. lalu klik next dan finish.
5) Berinama file tersebut lalu ubah Resource type menjadi Menu, Klik OK.
6) Lalu pada menu tersebut akan kita tambahkan item, yang nantinya digunakan untuk SearchView dan jangan lupa untuk memasukan icon yang sudah kita buat tadi:
B. Membuat Toolbar<?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/search"
android:title="Cari"
android:orderInCategory="1"
android:icon="@drawable/ic_search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always|collapseActionView"/>
</menu>
1) Untuk membuat Toolbar, kita perlu menghilangkan TitleBar/ActionBar bawaannya terlebih dahulu, pertama kita akan mengedit stylenya, dengan cara buka file style.xml yanag berada pada direktori res > values > style.xml.
Saya sarankan, kalian edit menjadi seperti berikut ini:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>
2) Buka file AndroidManifest.xml, tambahkan AppTheme.NoActionBar pada MainActivivty, seperti ini:
<activity android:name=".MainActivity"
android:theme="@style/AppTheme.NoActionBar">
Dan jangan lupa untuk menambahkan kedaua library berikut ini pada file build.gradle, yang berada pada direktori app.compile 'com.android.support:appcompat-v7:27.0.2'
compile 'com.android.support:design:27.0.2'
3) Selanjutnya kita akan membuat file Toolbarnya, buatlah layout baru, klik kanan pada direktori layout > new > Layout resource file, berinama file tersebut, misalnya "my_toolbar".Edit kode xml pada layout toolbar, seperti berikut ini:
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
app:theme="@style/AppTheme.AppBarOverlay"
app:popupTheme="@style/AppTheme.PopupOverlay">
</android.support.v7.widget.Toolbar>
4) Berikutnya kita akan mengedit layout pada file actvity_main.xml. disini kita akan menembahkan Toolbar yang sudah dibuat tadi, selain itu juga, kita akan menambahkan komponen pendukung seperti TextView. TextView tersebut akan kita gunakan untuk menampilkan hasil pencarian dari SearchView.<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true"
android:orientation="vertical"
tools:context="android.cianjur.developer.net.searchviewexample.MainActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:elevation="4dp"
tools:targetApi="lollipop">
<include
android:id="@+id/toolbar"
layout="@layout/my_toolbar" />
</android.support.design.widget.AppBarLayout>
<TextView
android:id="@+id/outout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:text="Hasil Pencarian"
android:textSize="15sp"
android:textStyle="bold" />
</LinearLayout>
Selanjutnya buka file MainActiviy.java pada project kalian, masukan source code berikut ini:package android.cianjur.developer.net.searchviewexample;
import android.annotation.SuppressLint;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.support.v7.widget.SearchView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private TextView Hasil;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Hasil = findViewById(R.id.outout);
}
//Code Program pada Method dibawah ini akan Berjalan saat Option Menu Dibuat
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Memanggil/Memasang menu item pada toolbar dari layout menu_bar.xml
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_bar, menu);
MenuItem searchIem = menu.findItem(R.id.search);
final SearchView searchView = (SearchView) searchIem.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@SuppressLint("SetTextI18n")
@Override
public boolean onQueryTextSubmit(String query) {
Hasil.setText("Hasil Pencarian: "+query);
Toast.makeText(getApplicationContext(),query, Toast.LENGTH_SHORT).show();
searchView.clearFocus();
return true;
}
@Override
public boolean onQueryTextChange(String s) {
return false;
}
});
return true;
}
}
Penjealsan:Pertama kita menginisialisasi Toolbar menggunakan fungsi setSupportActionBar().
Pada method onCreateOptionsMenu(), kita mendefinisikan menu yang sudah kita buat tadi, menggunakan fungsi getMenuInflater().inflate().
Setelah itu, kita menginisialisasi MenuItem yang akan digunakan sebagai SearchView, dengan menggunakan funsi setOnQueryTextListener(), fungsi ini digunakan untuk memprses permintaan data (query) dari user.
Didalm fungsi tersebut terdapat sebuah method. bernama onQueryTextSubmit(), yang dijalankan ketika user, mengsubmit data pada SearchView, pada contoh ini, kita menampilkan hasilnya pada TextView dan Toast.
Demo:
Projectnya bisa kalian download di Github Saya.
Terimakasih atas kunjungannya, semoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan. Pada tutorial selanjunya, kita akan belajar Cara Menerapkan SearchView dengan ListView.
Wassalamualaikum Warahmatullahi Wabarakatuh.
Terimakasih atas kunjungannya, semoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan. Pada tutorial selanjunya, kita akan belajar Cara Menerapkan SearchView dengan ListView.
Wassalamualaikum Warahmatullahi Wabarakatuh.