Android: Autocompletar

Si desea obtener sugerencias, cuando escribe en un campo de texto editable, puede hacerlo a través de AutoCompleteTextView. Proporciona sugerencias automáticamente cuando el usuario está escribiendo. La lista de sugerencias se muestra en un menú desplegable en el que el usuario puede elegir un elemento para reemplazar el contenido del cuadro de edición.

Para utilizar AutoCompleteTextView, primero debe crear un campo AutoCompletTextView en el xml. Su sintaxis se da a continuación.

<AutoCompleteTextView
   android:id="@+id/autoCompleteTextView1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_alignParentTop="true"
   android:layout_centerHorizontal="true"
   android:layout_marginTop="65dp"
   android:ems="10" >

Después de eso, debe obtener una referencia de esta vista de texto en java. Su sintaxis se da a continuación.

private AutoCompleteTextView actv;
actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);

Lo siguiente que debe hacer es especificar la lista de elementos de sugerencias que se mostrarán. Puede especificar los elementos de la lista como una matriz de cadenas en java o en strings.xml. Su sintaxis se da a continuación.

String[] countries = getResources().getStringArray(R.array.list_of_countries);
ArrayAdapter<String> adapter = new ArrayAdapter<String>
   (this,android.R.layout.simple_list_item_1,countries);
actv.setAdapter(adapter);

La clase de adaptador de matriz es responsable de mostrar los datos como una lista en el cuadro de sugerencias del campo de texto. lossetAdapterEl método se utiliza para configurar el adaptador de autoCompleteTextView. Aparte de estos métodos, los otros métodos de Autocompletar se enumeran a continuación.

No Señor Método y descripción
1

getAdapter()

Este método devuelve un adaptador de lista filtrable que se usa para completar automáticamente

2

getCompletionHint()

Este método devuelve un texto de sugerencia opcional que se muestra en la parte inferior de la lista de coincidencias.

3

getDropDownAnchor()

Este método devuelve el ID de la vista a la que está anclada la lista desplegable de autocompletar.

4

getListSelection()

Este método devuelve la posición de la selección de la vista desplegable, si hay una

5

isPopupShowing()

Este método indica si el menú emergente se muestra

6

setText(CharSequence text, boolean filter)

Este método establece el texto excepto que puede deshabilitar el filtrado

7

showDropDown()

Este método muestra el menú desplegable en la pantalla.

Ejemplo

El siguiente ejemplo demuestra el uso de la clase AutoCompleteTextView. Incluye una aplicación básica que le permite escribir y muestra sugerencias en su dispositivo.

Para experimentar con este ejemplo, debe ejecutarlo en un dispositivo real o en un emulador.

Pasos Descripción
1 Utilizará Android Studio para crear una aplicación de Android bajo un paquete com.example.sairamkrishna.myapplication.
2 Modifique el archivo src / MainActivity.java para agregar el código AutoCompleteTextView
3 Modifique el archivo XML de diseño res / layout / activity_main.xml agregue cualquier componente GUI si es necesario.
4 Ejecute la aplicación y elija un dispositivo Android en ejecución e instale la aplicación en él y verifique los resultados.

Aquí está el contenido de src/MainActivity.java

package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.content.Context;

import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaRecorder;

import android.os.Bundle;
import android.os.Environment;

import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;

import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.MultiAutoCompleteTextView;
import android.widget.Toast;
import java.io.IOException;


public class MainActivity extends Activity {
   AutoCompleteTextView text;
   MultiAutoCompleteTextView text1;
   String[] languages={"Android ","java","IOS","SQL","JDBC","Web services"};
   
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      text=(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);
      text1=(MultiAutoCompleteTextView)findViewById(R.id.multiAutoCompleteTextView1);
      
      ArrayAdapter adapter = new 
         ArrayAdapter(this,android.R.layout.simple_list_item_1,languages);
      
      text.setAdapter(adapter);
      text.setThreshold(1);
      
      text1.setAdapter(adapter);
      text1.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
   }
}

Aquí está el contenido de activity_main.xml

Aquí abc indica sobre el logotipo de tutorialspoint
<xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" 
   android:layout_width="match_parent"
   android:layout_height="match_parent" 
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" 
   tools:context=".MainActivity">
   
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Android Auto Complete"
      android:id="@+id/textView"
      android:textSize="30dp"
      android:layout_alignParentTop="true"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorialspoint"
      android:id="@+id/textView2"
      android:textColor="#ff3eff0f"
      android:textSize="35dp"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/logo"
      android:layout_below="@+id/textView2"
      android:layout_alignLeft="@+id/textView2"
      android:layout_alignStart="@+id/textView2"
      android:layout_alignRight="@+id/textView2"
      android:layout_alignEnd="@+id/textView2" />
      
   <AutoCompleteTextView
      android:id="@+id/autoCompleteTextView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:ems="10"
      android:layout_below="@+id/imageView"
      android:layout_alignLeft="@+id/imageView"
      android:layout_alignStart="@+id/imageView"
      android:layout_marginTop="72dp"
      android:hint="AutoComplete TextView">
      <requestFocus />
   </AutoCompleteTextView>
   
   <MultiAutoCompleteTextView
      android:id="@+id/multiAutoCompleteTextView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:ems="10"
      android:layout_below="@+id/autoCompleteTextView1"
      android:layout_alignLeft="@+id/autoCompleteTextView1"
      android:layout_alignStart="@+id/autoCompleteTextView1"
      android:hint="Multi Auto Complete " />
      
</RelativeLayout>

Aquí está el contenido de Strings.xml

<resources>
   <string name="app_name">My Application</string>
</resources>

Aquí está el contenido de AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >

   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.sairamkrishna.myapplication.MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>

Intentemos ejecutar su aplicación. Supongo que ha conectado su AVD mientras realizaba la configuración del entorno. Para ejecutar la aplicación desde Android Studio, abra uno de los archivos de actividad de su proyecto y haga clic en el icono Ejecutar en la barra de herramientas. Android Studio instalará esta aplicación en su AVD y su AVD mostrará la siguiente pantalla.

Ahora simplemente escriba en la vista de texto para ver sugerencias de idiomas. Como acabo de escribir una letra que es comoa, y me muestra una sugerencia de lenguaje.

El multiAutoCompleteTextView muestra sugerencias no solo para una palabra sino para todo el texto. Como después de escribir la primera palabra, cuando comienzo a escribir la segunda palabra, me muestra las sugerencias. Esto se puede mostrar en la siguiente imagen.