Actually this is fairly simple.
Android by default provides a SearchView class that has the ability to filter.
Just look at the XML layout that I am using in this post.
It consists of a SearchView and a ListView. The searchView searches the listview for the matched content.
Click on the link below to download the code.
Layout
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <SearchView android:id="@+id/search_view" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"/> </LinearLayout>
Android Source Code
Now the Java class or the activity that implements the searchFilter.
package com.coderzheaven.searchviewwithfilter; import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import android.view.Window; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.SearchView; /** * Shows a list that can be filtered in-place with a SearchView in non-iconified mode. */ public class SearchViewFilterMode extends Activity implements SearchView.OnQueryTextListener { private SearchView mSearchView; private ListView mListView; private final String[] mStrings = { "Google", "Apple", "Samsung", "Sony", "LG", "HTC" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_ACTION_BAR); setContentView(R.layout.searchview_filter); mSearchView = (SearchView) findViewById(R.id.search_view); mListView = (ListView) findViewById(R.id.list_view); mListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mStrings)); mListView.setTextFilterEnabled(true); setupSearchView(); } private void setupSearchView() { mSearchView.setIconifiedByDefault(false); mSearchView.setOnQueryTextListener(this); mSearchView.setSubmitButtonEnabled(true); mSearchView.setQueryHint("Search Here"); } public boolean onQueryTextChange(String newText) { if (TextUtils.isEmpty(newText)) { mListView.clearTextFilter(); } else { mListView.setFilterText(newText.toString()); } return true; } public boolean onQueryTextSubmit(String query) { return false; } }
Click to download the source code from here.
hey man you have done great job. this is what i need it.
and one more question this search view will work with action bar ?
That’s great man, works to me <3
Such it’s wonderul. And it’s named is totally true it’s code is really proved for me the heaven
This is great, but a quick question is there a toggle to switch off the black box that appears over the list echoing the search query?
Thanks
Nice! This code helped me!
Just one question though.
How would one disable the translucent box with the search text appearing in it?
how i will get array index position for ontiem click or for going to another activity by clicking array listed values
check the arg0 parameter in the click function.
Thanks! Very useful…
Where to download the Cheeses?
Lawrence,
I have update the code. Please check.
Pingback: [Solved] How to open new activity after clicking list view with search bar element? - Jass Web
Pingback: [Solved] How to open new activity after clicking list view with search bar element? – Jassweb Solved