2012-04-03 4 views
3

I setTextFilterEnabled для текстовой фильтрации ListView. Фильтрация работает нормально, но при вводе появляется всплывающее окно с текстом фильтра. Смотрите изображение:Как скрыть всплывающее окно фильтра в ListView в Android?

ListView filter text popup

Как я могу скрыть это всплывающее окно или изменить его положение на экране?

+1

Возможный дубликат [Как удалить всплывающий текст из фильтра списке следует?] (HTTP: // stackoverflow.com/questions/7999083/how-do-imove-popup-text-from-listview-filter) – blahdiblah

ответ

1

Filter.publishResults (ограничение CharSequence, Filter.FilterResults), вероятно, что всплывает. И, следовательно, вам, вероятно, потребуется подкласс Filter и переопределить его.

С уважением.

+0

Filter.FilterResults не отображается. Я думаю, что невозможно переопределить этот метод. –

+0

'Filter.publishResults (...)' ** имеет ** для переопределения для создания фильтра, это не то место, где отображается это всплывающее окно. – blahdiblah

4

Я нашел простое решение, которое работает для меня на этом блоге:

http://blog.jamesbaca.net/?p=128

При создании ArrayAdapter заселить ListView, просто хранить ссылку на его фильтр, а затем вы можете просто изменить фильтр на ArrayAdapter вместо от ListView.

* В Xamarin вы можете просто использовать arrayAdapter.InvokeFilter("my text");

3

Создать фильтр, (вы можете использовать другой адаптер)

ContentAdapter adapter = new ContentAdapter(this, android.R.layout.simple_list_item_1, 
      s); 
    list1.setAdapter(adapter); 
    Filter f = adapter.getFilter(); 

Затем использовать фильтр внутри «onQueryTextChange», вместо комментировал кода

public boolean onQueryTextChange(String newText) { 
     if (TextUtils.isEmpty(newText)) { 

      //list1.clearTextFilter(); 
      f.filter(null); 
     } else { 
      //list1.setFilterText(newText.toString()); 
      f.filter(newText); 

     } 
     return true; 
    } 
0

Привет, как сказал Ватсал, вы можете создать фильтр из адаптера. Таким образом, я решил, что я создал ArrayAdapter как переменную класса.

// ... 
private void setListAdapter() { 
    List<Word> words = Dictionary.getInstance(this).getWords(); 

    arrayAdapter = new ArrayAdapter<>(
      this, 
      android.R.layout.simple_list_item_activated_1, 
      android.R.id.text1, 
      words); 
    // Sets the List Adapter that we are using 
    this.setListAdapter(arrayAdapter); 
} 
// ... 

затем из этого класса переменной в onQueryTextChange или onQueryTextSubmit вы можете получить фильтр, как так

//... 
public boolean onQueryTextChange(String query) { 
    // By doing this it removes the popup completely which was arising from using the this.getListView().setFilterText(query) method 
    arrayAdapter.getFilter().filter(query); 

    return true; 
} 
//... 
Смежные вопросы