EditText con sugerencias de autocompletado en Android

AutoCompleteTextView

En este post crearemos un elemento EditText, que al momento que vayamos escribiendo palabras sobre este, nos vaya sugiriendo coincidencias obtenidas de un arreglo de palabras definidos por nosotros mismos anteriormente, como pueden ver a continuación.
Lo primero que tenemos que hacer es agregar el elemento EditText en la vista de nuestra Activity, que en este caso se llama AutoCompleteTextView.

<AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/autocomplete_region" android:layout_width="fill_parent" android:layout_height="wrap_content" />

Luego debemos crear la lista de las sugerencias que ofreceremos al usuario, esto debemos hacerlo en el archivo res/values/strings.xml. Recuerden que las etiquetas <resources></resources> son la raíz del archivo, por lo que si tienen más strings definidos deben ir también dentro de estas etiquetas.

<resources>
  <string-array name="region_array">
    <item>Región Metropolitana</item>
    <item>Región de Aríca y Parinacota</item>
    <item>Región de Tarapacá</item>
    <item>Región de Antofagasta</item>
    <item>Región de Atacama</item>
    <item>Región de Coquimbo</item>
    <item>Región de Valparaíso</item>
    <item>Región de O\'Higgins</item>
    <item>Región de Maule</item>
    <item>Región del Biobío</item>
    <item>Región de la Araucanía</item>
    <item>Región de los Ríos</item>
    <item>Región de los Lagos</item>
    <item>Región de Aysén</item>
    <item>Región de Magallanes y Antártica</item>
  </string-array>
</resources>

A continuación, dentro de la función onCreate, partimos referenciando el elemento AutoCompleteTextView que creamos anteriormente en la vista. Luego obtenemos las regiones que creamos en el archivos de string y creamos un adaptador ArrayAdapter que viene por defecto en Android. Cabe señalar que el elemento android.R.layout.simple_list_item_1 es también una vista que viene con el mismo android. Nosotros también podríamos crear nuestro propio adaptador extendiendo de ArrayAdapter (o de cualquier similar) y crear nuestra propia vista para los elementos que se desplieguen. Con lo que finalmente le pasamos el adaptador al elemento en la vista.

// Referencia al elemento en la vista
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_region);

// Arreglo con las regiones
String[] regions = getResources().getStringArray(R.array.region_array);

// Le pasamos las regiones al adaptador
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, regions);

// finalmente le asignamos el adaptador a nuestro elemento
textView.setAdapter(adapter);

Recuerden que pueden consultar la documentación completa de AutoCompleteTextView ya que dispone de muchas funcionalidades para que podemos utilizar.

Espero que les haya servido y saludos!.

Agregar un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *