Atom Blog

Como utilizar el AutoComplete en un EditText en Android con historial

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

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

Como conectar una Base de Datos en MySQL con Netbeans 7

En este nuevo post veremos como conectarnos a una base de datos en MySQL desde Netbeans 7.1.

Para poder crear la conexion necesitaremos tener los siguientes componentes:
-Netbeans 7.1.
-Se necesitara tener instalado: MySQL.
-El driver para conectarnos a la base de datos: mysql-connector-java-5.0.8-bin.jar.

Una vez descargado el driver lo copiaremos a la carpeta donde se encuentra instalado el jdk, en mi caso es:

C:\Program Files (x86)\Java\jdk1.6.0_31\jre\lib\ext

El siguiente paso es reiniciar el Netbeans.

Ahora nos dirigimos a la pestana de netbeans llamada Services, como se puede observar en la siguiente imagen y hacemos click derecho sobre Drivers, y pulsamos en New Driver.


Luego pulsamos en add.


Seleccionamos el archivo mysql-connector-java-5.0.8-bin.jar y pulsamos en ok.

Deberia mostrarse de la siguiente manera:


Nuestro siguiente paso es crear la conexion. Haremos click en Connect Using como se observa en la siguiente imagen.

Escribiremos los siguientes datos:
Host: localhost
Database: mysql
Port: 3306
User Name: root
Password: 12345
Como se muestra a continuacion: