9

Estoy recuperando una lista de cadenas de un webservice y quiero enumerarlas en un AutoCompleteTextField independientemente de los filtros incorporados AutoCompleteTextField.AutoCompleteTextView - deshabilitar el filtrado

¿Cómo puedo hacer eso? ¿Hay alguna manera de desactivar su filtrado interno fácilmente (preferiblemente sin subclases) He cargado todos mis resultados en un ArrayAdapter, el problema es que algunos de ellos no aparecen debido al filtrado.

Si voy en la dirección incorrecta, apúnteme en la dirección correcta.

Respuesta

1

Eventualmente clasifiqué ArrayAdapter, deshabilité los filtros anulando su método getFilter e hice mi HTTPRequest durante los eventos de "cambio de texto".

+0

hola gracias Alon i hav mismo problema. Le estaría agradecido si puede publicar algún código relacionado. Gracias de antemano –

+0

por favor agregue un código o describa su solución. estoy totalmente atrapado en esto. –

+0

@Rajivyadav Lo haré pronto –

14

Probablemente @Alon significaba la subclase ArrayAdapter, en lugar de AutoCompleteTextView. En el método getFilter(), uno debe devolver un filtro personalizado, que no realiza ningún filtro (en su performFiltering()). Probablemente el rendimiento podría ser un problema, porque theread se genera. Lo mejor sería derivar de TextEdit e implementar su propia ventana emergente de finalización. Pero esto es demasiado complicado para mí, hasta ahora. Finalmente, hice algo de la siguiente manera y me funciona. Cualquier comentario apreciado.

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

Espero que ayude.

Cuestiones relacionadas