Как скрыть всплывающее окно фильтра на ListView в Android? - PullRequest
3 голосов
/ 03 апреля 2012

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

ListView filter text popup

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

Ответы [ 4 ]

4 голосов
/ 21 сентября 2012

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

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

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

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

3 голосов
/ 25 апреля 2014

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

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;
    }
1 голос
/ 03 апреля 2012

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

С уважением.

0 голосов
/ 05 мая 2015

Привет, как упомянул Ватсал, вы можете создать фильтр из адаптера. Таким образом, я решил, что я создал 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;
}
//...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...