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();
}