AutoCompleteTextView - отключить фильтрацию - PullRequest
13 голосов
/ 15 декабря 2011

Я получаю список строк из webservice и хочу перечислить их в AutoCompleteTextField независимо от встроенных фильтров AutoCompleteTextField.

Как мне это сделать? Есть ли способ отключить его внутреннюю фильтрацию легко (желательно без подклассов) Я загрузил все свои результаты в ArrayAdapter, проблема в том, что некоторые из них не отображаются из-за фильтрации.

Если я иду в неправильном направлении, пожалуйста, укажите мне правильное направление.

Ответы [ 2 ]

23 голосов
/ 15 февраля 2012

Вероятно, @Alon имел в виду подкласс ArrayAdapter вместо AutoCompleteTextView. В методе getFilter() необходимо вернуть пользовательский фильтр, который вообще не выполняет фильтрацию (в его performFiltering()). Вероятно, производительность может быть проблемой - потому что там порождается. Лучше всего было бы извлечь из TextEdit и реализовать собственное всплывающее окно завершения. Но это снова слишком много хлопот для меня, пока. Наконец, я сделал что-то следующим, и это работает для меня. Любые отзывы приветствуются.

public class KArrayAdapter<T> 
extends ArrayAdapter<T>
{
    private Filter filter = new KNoFilter();
    public List<T> items;

    @Override
    public Filter getFilter() {
        return filter;
    }

    public KArrayAdapter(Context context, int textViewResourceId,
            List<T> objects) {
        super(context, textViewResourceId, objects);
        Log.v("Krzys", "Adapter created " + filter);
        items = objects;
    }

    private class KNoFilter extends Filter {

        @Override
        protected FilterResults performFiltering(CharSequence arg0) {
            FilterResults result = new FilterResults();
                result.values = items;
                result.count = items.size(); 
            return result;
        }

        @Override
        protected void publishResults(CharSequence arg0, FilterResults arg1) {
            notifyDataSetChanged();
        }
    }
}

Надеюсь, это поможет.

1 голос
/ 04 января 2012

В конце концов я вложил в подкласс ArrayAdapter, отключил фильтры, переопределив его метод getFilter, и сделал мой HTTPRequest во время событий "текст изменен".

...