---
title: "Android searchView"  
description: "It is a default control provided by the Android for developers. It is a part of widget which provides users to send requested query to the server side"  
author: "Nitish Kesarwani"  
published: 2018-01-04  
updated: 2018-03-27  
canonical: https://www.mindstick.com/articles/12758/android-searchview  
category: "android apps"  
tags: ["android", "java", "array list", "search"]  
reading_time: 6 minutes  

---

# Android searchView

##### Search View

It is a default control provided by the Android for developers. It is a part of widget which provides users to send requested query to the [server side](https://www.mindstick.com/forum/143/close-popup-window-by-server-side-code) and get the required result. This control receives data or query in audio and text form both. Through searchView, we can create a suggestion for the user on search based on previous queries and [enable voice](https://answers.mindstick.com/qa/109697/how-to-enable-voice-search-in-google-chrome) searching. There are various [attributes](https://www.mindstick.com/articles/13105/2-attributes-that-make-your-odoo-ecommerce-theme-productive-and-engaging) and methods which are helping to develop searchView [Interface](https://www.mindstick.com/articles/12036/interface-in-c-sharp) for the user.

##### ATTRIBUTES

 **android:iconifiedByDefault:** It is used to set default state of search

 **android:QueryHint:** We can set the query hint on the basis of users [requirement](https://yourviews.mindstick.com/view/85169/becoming-an-influencer-requirement-of-skills-and-knowledge)

 **android:inputType:** InputType defines the type of text entered in [text field](https://www.mindstick.com/forum/33753/how-to-get-value-from-text-field-on-button-click-in-ios)

 **android:maxWidth:** To set the maximum number of [characters](https://answers.mindstick.com/qa/42112/who-is-the-originator-of-avengers-characters) allowed for searching

 **android:imeOptions:** It is used to set IME (Input Method Editor) option in Text field

##### METHODS

 **setonQueryClickListener():** It is clickable [event handling](https://www.mindstick.com/articles/60/event-handling-in-csharp-dot-net) when user pressed the button

 **setonSearchTextListener():** This method sets a listener for users action with searchView

 **setonSuggestionListener():** This listener method invoke when the suggestion text is focused or click

 **setonQueryTextFocusListener():** It is used to set listener for requested query when text is focused

 **setQueryHint():** To provide hints for user query when text is typed in text field

 **setQuery():** To set the query which is based on [user data](https://www.mindstick.com/forum/160424/how-do-bearer-tokens-ensure-the-security-and-confidentiality-of-user-data) searched previously

 **getQueryHint():** This method is used to get the query hint set in searchView Box

 **getImeOptions():** It returns the IME options which is set in the query text field

 **setSuggestionAdapater():** If we wish to create custom adapter for search

 **setSubmitButtonEnabled():** Whether the [submit button](https://www.mindstick.com/forum/130/its-possible-without-submit-button) is Enabled or not

## Main_Activity.xml

```
<? Xml version="1.0" encoding="utf-8"?><LinearLayout   android: orientation="vertical"    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:layout_width="match_parent"    android:layout_height="wrap_content"    tools:context="com.mapsample.msclient009.notification.MainActivity” >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android: orientation="vertical">        <Search View            android: id="@+id/searchBox"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android: clickable="true" />        <ListView            android:id="@+id/list_view"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_alignParentLeft="true"            android:layout_alignParentStart="true"            android:layout_below="@+id/list" />    </LinearLayout></LinearLayout>
```

##### Main_Activity.java

```
Package com.mapsample.msclient009.searchView;import android.databinding.DataBindingUtil;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.SearchView;import com.journaldev.searchview.databinding.ActivityMainBinding;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    ActivityMainBinding bind;    ListAdapter adapter;    List arrayList= new ArrayList();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        bind = DataBindingUtil.setContentView(this, R.layout.activity_main);        arrayList.add("Java");        arrayList.add("scala");        arrayList.add("Fortan");        arrayList.add("C");        arrayList.add("C++");        arrayList.add("Andriod");        arrayList.add("BAsic");        arrayList.add("C#");        arrayList.add("PHP");        arrayList.add(“Python");        arrayList.add("SQL");        arrayList.add("SQLIte");        adapter= new ListAdapter(arrayList);        bind.listView.setAdapter(adapter);        bind.search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {            @Override            public boolean onQueryTextSubmit(String query) {                return false;            }            @Override            public boolean onQueryTextChange(String ntext) {                adapter.getFilter().filter(ntext);                return false;            }        });    }}
```

##### List.java

```
import android.content.Context;import android.databinding.DataBindingUtil;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Filter;import android.widget.Filterable;import com.journaldev.searchview.databinding.RowItemBinding;import java.util.ArrayList;import java.util.List;public class ListAdapter extends BaseAdapter implements Filterable {    List list;    List data;    ValueFilter filterValuer;    private LayoutInflater inflater;    public ListAdapter(List ctype) {        list =cype;        filterValue = cancel_type;    }    @Override    public int getCount() {        return list.size();    }    @Override    public String getItem(int pos) {        return list.get(pos;    }    @Override    public long getItemId(int pos) {        return pos;    }    @Override    public View getView(int pos, View convert, final ViewGroup parent) {        if (inflater == null) {            inflater = (LayoutInflater) parent.getContext()                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);        }        RowItemBinding itemBinder = DataBindingUtil.inflate(inflater, R.layout.item, parent, false);        ItemBinder.stringName.setText(list.get(pos));        return ItemBinder.getRoot();    }    @Override    public Filter getFilter() {        if (valueFilter == null) {            valueFilter = new ValueFilter();        }        return valueFilter;    }    private class ValueFilter extends Filter {        @Override        protected FilterResults performFiltering(CharSequence constraint) {            FilterResults results = new FilterResults();            if (constraint != null && constraint.length() > 0) {                List flist = new ArrayList();                for (int i = 0; i < list.size(); i++) {                    if ((filterValue.get(i).toUpperCase()).contains(constraint.toString().toUpperCase())) {                        filterList.add(filterValue.get(i));                    }                }                results.count = flist.size();                results.values = flist;            } else {                results.count = filterValue.size();                results.values = filterValuet;            }            return results;        }        @Override        protected void publishResults(CharSequence constraint,                                      FilterResults results) {            list = (List) results.values;            notifyDataSetChanged();        }    }}
```

##### List.xml

```
<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android     android:orientation="vertical"    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:layout_width="match_parent"    android:layout_height="wrap_content"    tools:context="com.mapsample.msclient009.notification.MainActivity >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content">        <TextView            android:id="@+id/stringName"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentLeft="true"            android:layout_alignParentStart="true"            android:layout_centerVertical="true"            android:padding="@dimen/activity_horizontal_margin"            android:textAllCaps="false"            android:textAppearance="?android:attr/textAppearanceMedium" />    </LinearLayout></Linearlayout>
```

\

---

Original Source: https://www.mindstick.com/articles/12758/android-searchview

Copyright © MindStick Software Pvt. Ltd. This Markdown version is provided for developers, AI systems, and offline reading.
