2011-11-03 21 views
7

Używam filtr tekstu na ListView i chciałbym pozbyć się wyskakującego widoku, który pokazuje, co jest tekst filtru. Czy istnieje sposób na usunięcie tego widoku?Jak usunąć tekst wyskakujący z filtra listy?

Niektóre przykładowy kod:

ArrayList<String> buildingNames = new ArrayList<String>(); 
    ListView list = (ListView)findViewById(R.id.list); 

    list.setAdapter(new ArrayAdapter<String>(this, R.layout.menu_item, buildingNames)); 
    list.setTextFilterEnabled(true); 

    list.setFilterText("test_filter"); 

Kiedy ustawić tekst filtra, naprawdę brzydki widok wyskakuje na dole ListView, który pokazuje co obecny tekst filtra:

ListView filter text popup

+0

Podaj przykładowy kod źródłowy, którego używasz w celu pokazania problemu, z którym się spotykasz. – pkk

Odpowiedz

8

znalazłem odpowiedź tutaj: http://markmail.org/message/7uju6bmmaswag2lu:

Wywołując metodę setTextFilterEnabled(), możesz zażądać tego wyskakującego okienka. Jeśli nie chcesz tego, wyłącz filtrowanie tekstu. Jest to interaktywna funkcja dla użytkownika. Nie ma być używane programowo. Jeśli chcesz programowo filtrować adapter, zadzwoń metodę getFilter() na adapterze bezpośrednio (jeśli Adapter obsługuje filtrowanie.)

Romain Guy

Więc zamiast używać setTextFilterEnabled trzeba pracować z filtrować bezpośrednio tak:

CustomAdapter customAdapter = (customAdapter)myListView.getAdapter(); 
Filter filter = customAdapter .getFilter(); 
filter.filter("search string"); 
0

spróbować zrobić tej zmiany

@Override 
     public boolean onQueryTextChange(String newText) { 
      System.out.println("tap"); 
      yourAdapter ca = (yourAdapter)listview.getAdapter(); 

      if (TextUtils.isEmpty(newText)) { 
       System.out.println("isEmpty"); 
       //listview.clearTextFilter(); 
       ca.getFilter().filter(null); 
      } else { 

       ca.getFilter().filter(newText); 
       //listview.setFilterText(newText); 

      } 
      return true; 
     }