AutoCompleteTextView – cómo deshabilitar desplegable cuando tenemos una coincidencia exacta después de filtrar?

¿Hay una manera fácil de hacerlo? Debido a que el menú desplegable con un elemento que es idéntico al texto escrito parece redundante.

Mi adaptador es simple, aquí está el código

AutoCompleteTextView autoCompleteTextViewAddress; ... ArrayAdapter<String> adapter = new ArrayAdapter<String>(AvatarMainActivity.this, android.R.layout.simple_list_item_1, emailsSet.toEmailStringSet()); autoCompleteTextViewAddress.setAdapter(adapter); 

emailsSet.toEmailStringSet() devuelve un conjunto de cadenas.

Cuando lleno autoCompleteTextViewAddress con correo electrónico idéntico a uno en conjunto de cadenas, todavía puedo ver una lista desplegable con un elemento.

Solución fea, pero funciona:

 public class CustomAutoCompleteTextView extends AutoCompleteTextView { public CustomAutoCompleteTextView(Context context) { super(context); // TODO Auto-generated constructor stub } public CustomAutoCompleteTextView(Context context, AttributeSet attrs) { super(context,attrs); } public CustomAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle) { super(context,attrs,defStyle); } @Override public boolean enoughToFilter() { boolean isEnough=(getThreshold()<=this.getText().length()); if(isEnough) { if(this.getAdapter()!=null) { int itemsCount=0; int matchIndex=0; String txt = this.getText().toString(); for (int i=0; i< this.getAdapter().getCount();i++) { String dat = (String)this.getAdapter().getItem(i); if(dat.startsWith(txt)) { itemsCount++; matchIndex=i; } } if(itemsCount == 1) { if(((String)getAdapter().getItem(matchIndex)).equals(txt)) { isEnough=false; } } } } return isEnough; } } 

Utilice la clase personalizada en lugar de AutoCompleteTextView original.

Overrided enoughToFilter función oculta desplegable cuando tenemos exactamente un registro coincidente en nuestro adaptador

Depende del tipo de código

Pero aquí está un ejemplo de SQL de agarrar las sugerencias

  If( (select count(*) from /* your code here */) > 1) Select /* field */ from /* your code again here */ 

De esa manera sólo mostraría cuando tiene 2 o más sugerencias.

  • TransitionDrawable con nueve parches - el margen es incorrecto
  • LinearLayout no se expande dentro de ScrollView
  • Teclado cubre la pantalla en lugar de empujar hasta el diseño?
  • Cambiar el color del botón sin cambiar la forma en android
  • Java.lang.NoClassDefFoundError: Resolución fallida de: Landroid / support / v4 / animation / AnimatorCompatHelper
  • Cambiar el color de fondo del elemento seleccionado en un ListView
  • ¿Por qué los botones se extienden para cubrir todo el layout_weight asignado
  • Diseño personalizado que redondea las esquinas de su contenido
  • Cómo inflar varias instancias de un diseño con el mismo id dentro de un diseño inflado
  • Cambio de fondo de una sola fila de gridview en android
  • Manteniendo una vista en la parte inferior con la biblioteca de SlidingUpPanel
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.