9

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

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

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

ответ

1

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

+0

привет спасибо Alon i hav same prob. я был бы признателен вам, если вы можете опубликовать некоторые связанные коды. Заранее спасибо –

+0

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

+0

@ Rajivyadav Скоро будет –

14

Возможно, @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(); 
     } 
    } 
} 

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