¿Cómo puedo evitar que el menú desplegable de autocompletado aparezca cuando el texto esté programado?

Tengo un AutoCompleteTextView en mi diseño. También tengo una manera alternativa de seleccionar los mismos artículos que están presentes en el AutoCompleteTextView. Cuando se selecciona la forma alternativa, relleno el valor en AutoCompleteTextView a través de:

autoCompleteTextView.setText(valueFromAlternativeSource); 

Donde valueFromAlternativeSource es una de las opciones automáticas completas válidas. El problema con esto es que la lista desplegable de autocompletar aparece cuando se llama a setText. Poner la siguiente línea después de lo anterior no funciona:

 autoCompleteTextView.dismissDropDown(); //Doesn't work. Why? 

¿Alguna idea acerca de por qué descartar el menú desplegable no funciona o de otras maneras que podría despedir el menú desplegable?

Esto funciona bien para mí y es menos complejo:

 ListAdapter adapter = autoCompleteTextView.getAdapter(); autoCompleteTextView.setAdapter(null); autoCompleteTextView.setText("whatever"); autoCompleteTextView.setAdapter(adapter); 

Parece que es un problema del orden cómo se procesan los mensajes. Mi trabajo alrededor se parece a esto:

 //autoCompleteTextView.dismissDropDown(); new Handler().post(new Runnable() { public void run() { autoCompleteTextView.dismissDropDown(); }}); 

Si desea admitir API <17, Subclase AutoCompleteTextview y reemplazar el método setText(text, filter)

 @Override public void setText(CharSequence text, boolean filter) { if(Build.VERSION.SDK_INT>=17) { super.setText(text, filter); }else{ if(filter){ setText(text); }else{ ListAdapter adapter = getAdapter(); setAdapter(null); setText(text); if(adapter instanceof ArrayAdapter) setAdapter((ArrayAdapter) adapter); else setAdapter((CursorAdapter) adapter); //if you use more types of Adapter you can list them here } } } 

Luego, cuando quiera configurar el texto manualmente, llame a setText(text, false)

Mi solución (pero no me gusta, debe haber algo mejor):

 autoCompleteTextView.setText(valueFromAlternativeSource); autoCompleteTextView.setDropDownHeight(0); autoCompleteTextView.setOnKeyListener(new OnKeyListener(){ @Override public boolean onKey(View v, int keyCode, KeyEvent event) { autoCompleteTextView.setDropDownHeight(LayoutParams.WRAP_CONTENT); } } 
 autoCompleteTextView.setText(valueFromOtherMeans, filter); * @param filter If <code>false</code>, no filtering will be performed * as a result of this call. 
  • AutoCompleteTextView respaldado por CursorLoader
  • Cómo mantener DropDownList de AutoCompleteTextView abierto después de presionar la tecla Atrás?
  • Sugerencias de AutoCompleteTextView en modo horizontal
  • AutoCompleteTextView no mostrar el resultado incluso cuando el ArrayAdapter se actualiza
  • "Android: dropDownAnchor" no funciona en Android Nougat (API 24)
  • Mostrar todos los elementos de AutocompleteTextView sin escribir texto
  • Estilo en la lista desplegable AutoCompleteTextView
  • Android AutoCompleteTextView con filtro de adaptador personalizado no funciona
  • Autocompletetextview setonitemselectedlistener no funciona
  • Cómo obtener el ID correcto del adaptador AutoCompleteTextView
  • Cómo encontrar la posición del elemento en un AutoCompletetextview lleno de matriz
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.