Una View de texto editable que muestra sugerencias automáticas para completar el texto mientras el usuario está escribiendo.
Estas sugerencias se muestran en forma de drop down menu en el que el usuario puede seleccionar un item que reemplace el contenido que había introducido.
El drop down menu se puede quitar en cualquier momento pulsando el botón atrás o si no se ha seleccionado nada del menú pulsando enter.
La lista de opciones disponibles se obtiene de un data adapter y aparece solamente si se cumple el número de carácteres mínimos definidos en el treshold.
USO DESDE XML
El uso desde XML es el mismo que en los casos anteriores. Sin embargo, en el caso del AutoCompleteTextView, es necesario configurar el adapter en código para que no se comporte como un EditText normal y corriente.
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_margin="10dp"android:orientation="vertical"> <AutoCompleteTextViewandroid:id="@+id/actvEjemplo"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="20sp"android:hint="Introduzca país de origen" /></LinearLayout>
PROGRAMAR ADAPTER
Array de sugerencias
Las diferentes opciones de autocompletado que damos al usuario deben estar guardadas en un Array. Este Array se puede definir en tres lugares diferentes:
En el código de la MainActivity -> Es lo que se suele ver en ejemplos sencillos pero no es nada recomendable pues va en contra de las buenas prácticas de Android.
En el fichero de resources strings.xml -> Es más adecuado, es lo que las buenas prácticas dicta y facilita el mantenimiento de la App.
En una base de datos -> Es la opción más compleja pero la más segura.
En el ejemplo utilizaremos el fichero strings.xml para almacenar nuestro Array de Strings:
values/strings.xml
<resources> <stringname="app_name">App de ejemplo</string> <stringname="texto_de_prueba">TEXTO DE PRUEBA</string> <string-arrayname="country_array"> <item>Andorra</item> <item>España</item> <item>Francia</item> <item>Portugal</item> </string-array></resources>
Adapter
Una vez tenemos nuestro StringArray tenemos que implementar el adapter en el código de MainActivity, para ello utilizamos el siguiente código:
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_margin="10dp"android:orientation="vertical"> <AutoCompleteTextViewandroid:id="@+id/actvEjemplo"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="20sp"android:hint="Introduzca país de origen"android:visibility="visible"/> <MultiAutoCompleteTextViewandroid:id="@+id/mactvEjemplo"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="20sp"android:hint="Introduzca Comunidad Autónoma"android:visibility="visible"/></LinearLayout>