How to handle back button of Search View in android

android, android-search, searchview

Solution

You can add listener for this as :

MenuItem searchMenuItem = menu.findItem(R.id.menu_search);
    searchMenuItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {

        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            // Do whatever you need
            return true; // KEEP IT TO TRUE OR IT DOESN'T OPEN !!
        }

        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            // Do whatever you need
            return true; // OR FALSE IF YOU DIDN'T WANT IT TO CLOSE!
        }
    });

Problem

I have Develop an application that have search view in action bar and i got issue when i am do search its filter perfectly but when i am press back button its still showing filter data so my question is what is event of back button of Action Bar Search view.? My Code of Search View is ``` SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(Menus.SEARCH)); searchView.setQueryHint(this.getString(R.string.search)); editSearch = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); editSearch.setHintTextColor(getResources().getColor(R.color.white)); searchView.setOnQueryTextListener(OnQuerySearchView); private OnQueryTextListener OnQuerySearchView = new OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String newText) { if (TextUtils.isEmpty(newText)) { listAllContact.clearTextFilter(); } else { listAllContact.setFilterText(newText.toString()); } return true; } @Override public boolean onQueryTextChange(String newText) { String text = editSearch.getText().toString() .toLowerCase(Locale.getDefault()); adapter.filter(text); return true; } }; ``` Filter Method in Adapter ``` public void filter(String charText) { charText = charText.toLowerCase(Locale.getDefault()); propertyList.clear(); if (charText.length() == 0) { propertyList.addAll(arrayList); notifyDataSetChanged(); } else { for (ContactProperty p : arrayList) { if (p.getFriendName().toLowerCase(Locale.getDefault()) .contains(charText)) { propertyList.add(p); } } notifyDataSetChanged(); } ```

Original source

Related problems