2011-11-03 12 views
7

Sto usando un filtro di testo su un ListView e mi piacerebbe sbarazzarmi della vista popup che mostra quale sia il testo del filtro. C'è un modo per rimuovere questa vista?Come rimuovo il testo popup dal filtro listview?

qualche esempio di codice:

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"); 

Quando ho creato il testo del filtro, davvero un brutto vista si apre sul fondo della ListView che mostra ciò che il testo del filtro corrente è:

ListView filter text popup

+0

Fornisci del codice sorgente di esempio che stai usando isolato per mostrare il problema che stai affrontando. – pkk

risposta

8

ho trovato la risposta qui: http://markmail.org/message/7uju6bmmaswag2lu:

Chiamando setTextFilterEnabled() si richiede questo popup. Se non lo desideri, lo disattiva il filtro del testo. Questa è una funzione interattiva per l'utente. Non è pensato per essere usato programmaticamente. Se si desidera filtrare programatically l'adattatore, chiamare getFilter() sul vostro adattatore direttamente (se la scheda supporta il filtro.)

Romain Guy

Quindi, piuttosto che usare setTextFilterEnabled è necessario lavorare con il filtrare direttamente in questo modo:

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

Provate a fare questo cambiamento

@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; 
     } 
Problemi correlati