Question

I have onQueryTextChange listener on my SearchView.

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String searchString) {
            return true;
        }

        @Override
        public boolean onQueryTextChange(String s) {
            if (s.length() > 5) {
                searchView.setQuery(s.substring(0, 5), false);
            }
            return false;
        }
    });

My goal is to limit number of characters to 5. The problem is that,

  1. I am typing 5 characters.
  2. After that I am typing one more character.
  3. I am hitting same character again and in second hit it is not triggering the listener and it is showing the 6th character in SearchView

Thanks for help

Était-ce utile?

La solution

Instead of limiting in listener, I solved it getting EditText in SearchView.

I was using this method to get EditText but it was returning null,

searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
EditText etSearchView = (EditText) searchView.findViewById(id);
etSearchView.setFilters(new InputFilter[] {new InputFilter.LengthFilter(5)});

Instead of getting id of EditText I just passed it's actual id and it worked,

searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
EditText etSearchView = (EditText) searchView.findViewById(R.id.search_src_txt);
etSearchView.setFilters(new InputFilter[] {new InputFilter.LengthFilter(5)});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top