Why doesn't onQueryTextChange start when double clicked?

I have a onQueryTextChangelistener on mySearchView.

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 the number of characters to 5. The problem is that

  • I type 5 characters.
  • After that, I type another character.
  • I click the same character again, and in the second hit it does not start the listener, and it shows the 6th character in SearchView

thanks for the help

+3
source share
1 answer

Instead of restricting the listener, I decided to get EditTextin SearchView.

I used this method to get EditText, but it returned 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 idfrom EditText, I just passed its 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)});
+2
source

All Articles