Search Function in Android using ListView
Search View is similar to the search box in HTML. With this widget, we can search anything from particular list items.
1. MainActivity.java file
import …
public class Search_Demo extends AppCompatActivity {
SearchView searchView;
ListView listView;
ArrayList list;
ArrayAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search__demo);
searchView = (SearchView) findViewById(R.id.searchView);
listView = (ListView) findViewById(R.id.lv1);
list = new ArrayList<>();
list.add(“Apple”);
list.add(“Banana”);
list.add(“Pineapple”);
list.add(“Orange”);
list.add(“Lychee”);
list.add(“Gavava”);
list.add(“Peech”);
list.add(“Melon”);
list.add(“Watermelon”);
list.add(“Papaya”);
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1,list);
listView.setAdapter(adapter);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
if(list.contains(query)){
adapter.getFilter().filter(query);
}else{
Toast.makeText(Search_Demo.this, “No Match found”,Toast.LENGTH_LONG).show();
}
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
// adapter.getFilter().filter(newText);
return false;
}
});
}
}
2. activity_main.xml file
<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout
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/container”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
tools:context=”.Search_Demo”>
<ListView
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:id=”@+id/lv1″
android:divider=”#ad5″
android:dividerHeight=”2dp”
android:layout_below=”@+id/searchView”/>
<SearchView
android:id=”@+id/searchView”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:queryHint=”Search Here”
android:iconifiedByDefault=”false”
android:layout_alignParentTop=”true”/>
</RelativeLayout>
Output:
