AutocompletarAuto Complete

AutoCompleteTextView es un elemento de vista de texto editable que muestra sugerencias de finalización automáticamente mientras el usuario está escribiendo.AutoCompleteTextView is an editable text view element that shows completion suggestions automatically while the user is typing. La lista de sugerencias se muestra en un menú desde el que el usuario puede elegir un elemento que se va a reemplazar el contenido del cuadro de edición con desplegable.The list of suggestions is displayed in a drop down menu from which the user can choose an item to replace the content of the edit box with.

Ejemplo de Autocompletar

Información generalOverview

Para crear un widget de entrada de texto que se proporciona sugerencias de Autocompletar, use el AutoCompleteTextViewTo create a text entry widget that provides auto-complete suggestions, use the AutoCompleteTextView widget.widget. Las sugerencias se reciben de una colección de cadenas asociadas con el widget a través de un ArrayAdapter .Suggestions are received from a collection of strings associated with the widget through an ArrayAdapter.

En este tutorial, creará una AutoCompleteTextViewIn this tutorial, you will create a AutoCompleteTextView widget que se proporciona sugerencias para un nombre de país.widget that provides suggestions for a country name.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="5dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Country" />
    <AutoCompleteTextView android:id="@+id/autocomplete_country"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"/>
</LinearLayout>

El TextView es una etiqueta que presenta el AutoCompleteTextViewThe TextView is a label that introduces the AutoCompleteTextView widget.widget.

TutorialTutorial

Inicie un nuevo proyecto denominado HelloAutoComplete.Start a new project named HelloAutoComplete.

Crear un archivo XML denominado list_item.xml y guardarlo en el interior del y diseño de los recursos carpeta.Create an XML file named list_item.xml and save it inside the Resources/Layout folder. Acción de compilación de este archivo en AndroidResource.Set the Build Action of this file to AndroidResource. Edite el archivo tenga el siguiente aspecto:Edit the file to look like this:

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="16sp"
    android:textColor="#000">
</TextView>

Este archivo define una sencilla TextView que se usará para cada elemento que aparece en la lista de sugerencias.This file defines a simple TextView that will be used for each item that appears in the list of suggestions.

Abra Resources/Layout/Main.axml e inserte lo siguiente:Open Resources/Layout/Main.axml and insert the following:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="5dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Country" />
    <AutoCompleteTextView android:id="@+id/autocomplete_country"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"/>
</LinearLayout>

Abra MainActivity.cs e inserte el código siguiente para el OnCreate()Open MainActivity.cs and insert the following code for the OnCreate() método:method:

protected override void OnCreate (Bundle bundle)
{
    base.OnCreate (bundle);

    // Set our view from the "Main" layout resource
    SetContentView (Resource.Layout.Main);

    AutoCompleteTextView textView = FindViewById<AutoCompleteTextView> (Resource.Id.autocomplete_country);
    var adapter = new ArrayAdapter<String> (this, Resource.Layout.list_item, COUNTRIES);

    textView.Adapter = adapter;
}

Después de la vista de contenido se establece en el main.xml diseño, el AutoCompleteTextViewAfter the content view is set to the main.xml layout, the AutoCompleteTextView widget se captura desde el diseño con FindViewById .widget is captured from the layout with FindViewById. Un nuevo ArrayAdapter , a continuación, se inicializa para enlazar el list_item.xml diseño para cada elemento de lista en el COUNTRIES matriz de cadenas (definido en el paso siguiente).A new ArrayAdapter is then initialized to bind the list_item.xml layout to each list item in the COUNTRIES string array (defined in the next step). Por último, SetAdapter() se llama para asociar el ArrayAdapter con el AutoCompleteTextViewFinally, SetAdapter() is called to associate the ArrayAdapter with the AutoCompleteTextView widget de modo que la matriz de cadenas llenará la lista de sugerencias.widget so that the string array will populate the list of suggestions.

Dentro de la MainActivity clase, agregue la matriz de cadenas:Inside the MainActivity class, add the string array:

static string[] COUNTRIES = new string[] {
  "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
  "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
  "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
  "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
  "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
  "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory",
  "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi",
  "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
  "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
  "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
  "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",
  "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
  "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
  "Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",
  "Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",
  "French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",
  "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",
  "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",
  "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
  "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",
  "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
  "Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",
  "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
  "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",
  "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",
  "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",
  "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",
  "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",
  "Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",
  "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",
  "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",
  "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
  "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",
  "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",
  "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",
  "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",
  "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",
  "Ukraine", "United Arab Emirates", "United Kingdom",
  "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",
  "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",
  "Yemen", "Yugoslavia", "Zambia", "Zimbabwe"
};

Esta es la lista de sugerencias que se proporcionará en una lista desplegable cuando el usuario escribe en el AutoCompleteTextViewThis is the list of suggestions that will be provided in a drop-down list when the user types into the AutoCompleteTextView widget.widget.

Ejecute la aplicación.Run the application. A medida que escribe, debería ver algo parecido a esto:As you type, you should see something like this:

Ejemplo Autocompletar captura de pantalla de lista de nombres que contienen "ca"Example auto-complete screenshot listing names that contain "ca"

Más informaciónMore Information

Tenga en cuenta que no es una práctica de diseño recomendado porque el código de aplicación debe centrarse en el comportamiento, no el contenido mediante una matriz de cadenas codificadas de forma rígida.Note that using a hard-coded string array is not a recommended design practice because your application code should focus on behavior, not content. Contenido de la aplicación, como las cadenas debe externalizarse desde el código para realizar modificaciones en el contenido más fácil y facilitar la localización del contenido.Application content such as strings should be externalized from the code to make modifications to the content easier and facilitate localization of the content. Las cadenas codificadas de forma rígida se usan en este tutorial solo para facilitar la creación y centrarse en el AutoCompleteTextViewThe hard-coded strings are used in this tutorial only to make it simple and focus on the AutoCompleteTextView widget.widget. En su lugar, la aplicación debe declarar estas matrices de cadenas en un archivo XML.Instead, your application should declare such string arrays in an XML file. Esto puede hacerse con un <string-array> recursos en el proyecto res/values/strings.xml archivo.This can be done with a <string-array> resource in your project res/values/strings.xml file. Por ejemplo:For example:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="countries_array">
        <item>Bahrain</item>
        <item>Bangladesh</item>
        <item>Barbados</item>
        <item>Belarus</item>
        <item>Belgium</item>
        <item>Belize</item>
        <item>Benin</item>
    </string-array>
</resources>

Para usar estas cadenas de recursos para la ArrayAdapter , reemplazar el original. ArrayAdapterTo use these resource strings for the ArrayAdapter, replace the original ArrayAdapter línea de constructor con lo siguiente:constructor line with the following:

string[] countries = Resources.GetStringArray (Resource.array.countries_array);
var adapter = new ArrayAdapter<String> (this, Resource.layout.list_item, countries);

ReferenciasReferences

Las partes de esta página son modificaciones en función de trabajo creado y compartido por el Android Open Source Project y usarse de acuerdo con los términos descritos en el licencia de atribución 2.5 de Creative Commons . En este tutorial se basa en el tutorial Android autocompletado .Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License . This tutorial is based on the Android Auto Complete tutorial .