Before getting into searchview example, we should know what is search view in android, search view is just like search box in HTML. we can search anything from particular list items.
This example demonstrate about how to integrate search view in android.
Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project.
Step 2 − Add the following code to res/layout/activity_main.xml.
<?xml version = "1.0" encoding = "utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android = "https://schemas.android.com/apk/res/android" xmlns:tools = "https://schemas.android.com/tools" android:layout_width = "match_parent" android:layout_height = "match_parent"> <LinearLayout android:layout_width = "match_parent" android:layout_height = "match_parent" android:orientation = "vertical"> <android.support.v7.widget.SearchView android:id = "@+id/search" android:layout_width = "match_parent" android:layout_height = "wrap_content" /> <ListView android:id = "@+id/list" android:layout_width = "wrap_content" android:layout_height = "wrap_content"/> </LinearLayout> </android.support.constraint.ConstraintLayout>
In the above code we are giving search view and listview because search view going to search element from a list.
Step 3 − Add the following code to src/MainActivity.java
import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.SearchView; import android.widget.Toast; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ListView list = findViewById(R.id.list); SearchView search = findViewById(R.id.search); search.setActivated(true); search.setQueryHint("Type your keyword here"); search.onActionViewExpanded(); search.setIconified(false); ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("JAVA"); arrayList.add("ANDROID"); arrayList.add("C Language"); arrayList.add("CPP Language"); arrayList.add("Go Language"); arrayList.add("AVN SYSTEMS"); final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList); list.setAdapter(arrayAdapter); search.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { return false; } @Override public boolean onQueryTextChange(String newText) { arrayAdapter.getFilter().filter(newText); return false; } }); list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String clickedItem = (String) list.getItemAtPosition(position); Toast.makeText(MainActivity.this, clickedItem, Toast.LENGTH_LONG).show(); } }); } }
In the above searchview we have given one listener as setOnQueryTextListener. It going to listen your text changes with two methods as shown below.
onQueryTextSubmit(String query) − After enter into the text in searchview if you want to do anything with that string you can do in this method.
onQueryTextChange(String newText) − after text change means while enter text into search view it going to do some action.
In the above code we have filter text while query changes as shown below
@Override public boolean onQueryTextChange(String newText) { arrayAdapter.getFilter().filter(newText); return false; }
Let's try to run your application. I assume you have connected your actual Android Mobile device with your computer. To run the app from android studio, open one of your project's activity files and click Run icon from the toolbar. Select your mobile device as an option and then check your mobile device which will display your default screen
Now enter some text which is closely matches to listview items as shown below