Android - Completamento automatico

Se desideri ricevere suggerimenti, quando digiti in un campo di testo modificabile, puoi farlo tramite AutoCompleteTextView. Fornisce suggerimenti automaticamente quando l'utente sta digitando. L'elenco dei suggerimenti viene visualizzato in un menu a discesa dal quale l'utente può scegliere un elemento con cui sostituire il contenuto della casella di modifica.

Per poter utilizzare AutoCompleteTextView devi prima creare un campo AutoCompletTextView in xml. La sua sintassi è data di seguito.

<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" >

Dopodiché, devi ottenere un riferimento a questa visualizzazione di testo in java. La sua sintassi è data di seguito.

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

La prossima cosa che devi fare è specificare l'elenco di elementi di suggerimento da visualizzare. È possibile specificare gli elementi dell'elenco come un array di stringhe in java o in strings.xml. La sua sintassi è data di seguito.

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 classe dell'adattatore di array è responsabile della visualizzazione dei dati come elenco nella casella dei suggerimenti del campo di testo. IlsetAdapterviene utilizzato per impostare l'adattatore di autoCompleteTextView. Oltre a questi metodi, gli altri metodi di completamento automatico sono elencati di seguito.

Suor n Metodo e descrizione
1

getAdapter()

Questo metodo restituisce un adattatore di elenco filtrabile utilizzato per il completamento automatico

2

getCompletionHint()

Questo metodo restituisce un suggerimento di testo opzionale visualizzato in fondo all'elenco di corrispondenze

3

getDropDownAnchor()

Questo metodo restituisce l'ID per la vista a cui è ancorato l'elenco a discesa di completamento automatico.

4

getListSelection()

Questo metodo restituisce la posizione della selezione della vista a discesa, se presente

5

isPopupShowing()

Questo metodo indica se viene visualizzato il menu popup

6

setText(CharSequence text, boolean filter)

Questo metodo imposta il testo tranne per il fatto che può disabilitare il filtro

7

showDropDown()

Questo metodo visualizza il menu a discesa sullo schermo.

Esempio

L'esempio seguente mostra l'uso della classe AutoCompleteTextView. Crea un'applicazione di base che ti consente di digitare e visualizza suggerimenti sul tuo dispositivo.

Per sperimentare questo esempio, è necessario eseguirlo su un dispositivo reale o in un emulatore.

Passi Descrizione
1 Utilizzerai Android Studio per creare un'applicazione Android in un pacchetto pacchetto com.example.sairamkrishna.myapplication.
2 Modificare il file src / MainActivity.java per aggiungere il codice AutoCompleteTextView
3 Modificare il file XML di layout res / layout / activity_main.xml aggiungere qualsiasi componente della GUI, se necessario.
4 Esegui l'applicazione e scegli un dispositivo Android in esecuzione, installa l'applicazione su di esso e verifica i risultati.

Ecco il contenuto di 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());
   }
}

Ecco il contenuto di activity_main.xml

Qui abc indica il logo di 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>

Ecco il contenuto di Strings.xml

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

Ecco il contenuto di 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>

Proviamo a eseguire la tua applicazione. Presumo che tu abbia collegato il tuo AVD durante la configurazione dell'ambiente. Per eseguire l'app da Android Studio, apri uno dei file di attività del progetto e fai clic sull'icona Esegui dalla barra degli strumenti. Android Studio installerà questa applicazione nel tuo AVD e il tuo AVD mostrerà la seguente schermata.

Ora basta digitare nella visualizzazione del testo per vedere i suggerimenti delle lingue. Mentre digito solo una lettera che è comeae mi mostra il suggerimento del linguaggio.

Il multiAutoCompleteTextView mostra suggerimenti non solo per una parola ma per l'intero testo. Come dopo aver scritto la prima parola, quando inizio a scrivere la seconda parola, mi vengono visualizzati i suggerimenti. Questo può essere mostrato nell'immagine qui sotto.