9

Sto recuperando un elenco di stringhe da un webservice e desidero elencarle su un AutoCompleteTextField indipendentemente dai filtri incorporati AutoCompleteTextField.AutoCompleteTextView - disabilitare il filtro

Come faccio? c'è un modo per disabilitare facilmente il suo filtraggio interno (preferibilmente senza sottoclassi) Ho caricato tutti i miei risultati in un ArrayAdapter, il problema è che alcuni di essi non vengono visualizzati a causa del filtro.

Se vado nella direzione sbagliata, per favore indicami la direzione giusta.

risposta

1

Eventualmente ho suddiviso la sottoclasse ArrayAdapter, disattivato i filtri ignorando il metodo getFilter e creato il mio HTTPRequest durante gli eventi "testo modificato".

+0

ciao grazie Alon ho ha lo stesso prob. ti sarei grato se potesse pubblicare del codice correlato. Grazie in anticipo –

+0

per favore aggiungi del codice o descrivi la tua soluzione. sono totalmente bloccato su questo. –

+0

@Rajivyadav Lo farò presto –

14

Probabilmente @Alon significa sottoclasse ArrayAdapter, anziché AutoCompleteTextView. Nel metodo getFilter() si deve restituire un filtro personalizzato, che non esegue alcun filtraggio (nel suo performFiltering()). Probabilmente la performance potrebbe essere un problema, perché il theread è generato. La cosa migliore sarebbe derivare da TextEdit e implementare il proprio popup di completamento. Ma questo è ancora troppi problemi per me, finora. Alla fine, ho fatto qualcosa come segue e funziona per me. Qualsiasi feedback apprezzato.

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

Spero che sia d'aiuto.