2016-01-05 12 views
6

Potrzebuję uzyskać tekst z SearchView i porównać go do ciągów w ListView mojej działalności i pokazać toast, jeśli słowo w SearchView jest w moim ListView. Jak mogę to zrobić? Oto mój kod roboczych dla SearchView:Jak uzyskać tekst z SearchView?

MenuItem ourSearchItem = menu.findItem(R.id.menu_item_search); 

     SearchView sv = (SearchView) ourSearchItem.getActionView(); 

     sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String query) { 
       return false; 
      } 

      @Override 
      public boolean onQueryTextChange(String newText) { 

       adapter.getFilter().filter(newText); 
       } 
       return false; 
      } 
     }); 
+0

Możliwa duplikat [Jak uzyskać wejście od searchview do TextView] (http://stackoverflow.com/questions/20712247/how-to-get-input-from- searchview-to-textview) – starkshang

Odpowiedz

16

dostać próbę SearchView użyć sv.getQuery().

+0

Dzięki! Myślałem o tym: if (Arrays.asList (arraylist) .contains (sv.getQuery()) {// wykonaj jakąś czynność}, ale to nie działa ( – androider

+0

Nie mogę powiedzieć dlaczego, ponieważ nie miałem zobacz twój kod, ale możesz to debugować, wydrukować wartość 'arraylist' i' Arrays.asList (arraylist) 'oraz' sv.getQuery() ', zauważ, że upewnij się, że twój ciąg zapytania nie ma spacji, jeśli tak, , użyj 'trim()', aby go usunąć. – starkshang

5

wypróbować ten kod:

MenuItem ourSearchItem = menu.findItem(R.id.menu_item_search); 

    SearchView sv = (SearchView) ourSearchItem.getActionView(); 

    sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
      Toast.makeText(getContext(), query, Toast.LENGTH_SHORT).show(); 
      return true; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 

      adapter.getFilter().filter(newText); 
      } 
      return false; 
     } 
    });