En este corto post veremos como realizar el auto completado de palabras o frases dentro de un EditText en Android en Java
El AutoComplete en un EditText en Android es necesario cuando se requiere auto completar frases o palabras con las palabras que se han utilizado previamente. Para ello Android permite guardar un historial de las palabras introducidas a traves de las preferencias compartidas (SharedPreferences)
Antes que nada definimos el elemento AutoCompleteTextView dentro de nuestro archivo *.xml
Seguido de esto incluimos el siguiente código en la clase *.java
 
Luego definimos el siguiente metodo:
Guardamos cada valor introducido en el editor de texto:
Utilizamos el siguiente metodo para guardar las palabras introducidas en las preferencias compartidas:
Configuramos las siguientes variables:
El AutoComplete en un EditText en Android es necesario cuando se requiere auto completar frases o palabras con las palabras que se han utilizado previamente. Para ello Android permite guardar un historial de las palabras introducidas a traves de las preferencias compartidas (SharedPreferences)
Antes que nada definimos el elemento AutoCompleteTextView dentro de nuestro archivo *.xml
<AutoCompleteTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textInput"
    android:layout_marginTop="108dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:editable="true"
    android:hint="Ingrese algo aqui"/>
Seguido de esto incluimos el siguiente código en la clase *.java
public static final String PREFS_NAME = "PingBusPrefs";
public static final String PREFS_SEARCH_HISTORY = "SearchHistory";
private SharedPreferences settings;
private Set<String> history;
Luego definimos el siguiente metodo:
private void setAutoCompleteSource()
{
    AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.textInput);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
  this, android.R.layout.simple_list_item_1, history.toArray(new String[history.size()]));
    textView.setAdapter(adapter);
}
Guardamos cada valor introducido en el editor de texto:
private void addSearchInput(String input)
{
    if (!history.contains(input))
    {
        history.add(input);
        setAutoCompleteSource();
    }
}
Utilizamos el siguiente metodo para guardar las palabras introducidas en las preferencias compartidas:
private void savePrefs()
{
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.putStringSet(PREFS_SEARCH_HISTORY, history);
    editor.commit();
}
Configuramos las siguientes variables:
settings = getSharedPreferences(PREFS_NAME, 0);
history = settings.getStringSet(PREFS_SEARCH_HISTORY, new HashSet<String>());
setAutoCompleteSource();
final AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.textInput);
textView.setOnKeyListener(new View.OnKeyListener()
{
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // If the event is a key-down event on the "enter" button
        if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                (keyCode == KeyEvent.KEYCODE_ENTER)) {
            addSearchInput(textView.getText().toString());
            return true;
        }
        return false;
    }
});
@Override
protected void onStop()
{
    super.onStop();
    savePrefs();
}
 
 
 

