9

Pobieram listę ciągów od webservice i chcę je wyświetlić na AutoCompleteTextField niezależnie od wbudowanych filtrów AutoCompleteTextField.AutoCompleteTextView - wyłącz filtrowanie

Jak to zrobić? czy istnieje sposób na łatwe dezaktywowanie wewnętrznego filtrowania (najlepiej bez podklas) Załadowałem wszystkie moje wyniki do ArrayAdapter, problem polega na tym, że niektóre z nich nie pojawiają się z powodu filtrowania.

Jeśli zmierzam w złym kierunku, proszę wskazać mi właściwy kierunek.

Odpowiedz

1

Ostatecznie podklasowałem ArrayAdapter, wyłączyłem filtry, przesłoniłem metodę getFilter i wykonałem moją HTTPRequest podczas wydarzeń "zmienionych tekstem".

+0

Cześć dzięki Alon i hav same prob. Byłbym wdzięczny, gdybyś mógł opublikować powiązany kod. Z góry dziękuję –

+0

proszę dodaj kod lub opisz swoje rozwiązanie. Całkowicie utknąłem na tym. –

+0

@Rajivyadav Wkrótce –

14

Prawdopodobnie @Alon miał na myśli podklasy ArrayAdapter, zamiast AutoCompleteTextView. W metodzie getFilter() należy zwrócić niestandardowy filtr, który nie wykonuje żadnego filtrowania (w jego performFiltering()). Prawdopodobnie występ może być problemem - ponieważ tam się pojawia. Najlepiej byłoby wyprowadzić z TextEdit i zaimplementować własne okienko uzupełniania. Ale na razie to dla mnie zbyt wiele kłopotów. W końcu zrobiłem coś takiego i działa to dla mnie. Wszelkie opinie są mile widziane.

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(); 
     } 
    } 
} 

Mam nadzieję, że to pomaga.

Powiązane problemy