Android

Escuchar tecla presionada y cambio de texto en EditText de Android

Introducción

Hay una cosa muy simple en Android que al inicio no parece tan fácil de hacer. Se trata de escuchar el evento de una tecla del teclado (valga la redundancia) presionada en un EditText. Algo así como el keyup de JavaScript.

Lo que haremos en este post será ver cómo escuchar el evento de texto cambiado dentro de un EditText en Android. Esto viene de maravilla cuando, por ejemplo, queremos que una acción se realice cada que el usuario introduzca o borre algo de la caja de texto.

Este método se dispara cuando:

  • Pegamos texto
  • Autocompletamos del teclado
  • Escribimos algo con el teclado

Vamos allá.

Detectar tecla presionada en EditText de Android

Primero debemos definir nuestro elemento EditText en el layout y agregarle un id. En mi caso le puse el id editTextBusqueda.

Más tarde lo declaramos en nuestro código de Java:

EditText editTextBusqueda = findViewById(R.id.editTextBusqueda);

Podemos nombrar a la variable como queramos, recordemos que si cambiamos el id en nuestro layout también lo cambiamos en el código al llamar a findViewById.

Ahora al EditText le ponemos un nuevo TextWatcher con el método addTextChangedListener. El código se ve así:

editTextBusqueda.addTextChangedListener(new TextWatcher() {

    // Antes de que el texto cambie (no debemos modificar nada aquí)
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }


    //Cuando esté cambiando...(no debemos modificar el texto aquí)
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    /*
     * Aquí el texto ya ha cambiado completamente, tenemos el texto actualizado en pocas palabras
     *
     * Por cierto, aquí sí podemos modificar el texto pero debemos tener cuidado para no caer en
     * un ciclo infinito
     * */    @Override
    public void afterTextChanged(Editable s) {
        String elNuevoTexto = s.toString();
        // Hacer lo que sea con elNuevoTexto
        Toast.makeText(getApplicationContext(), "Cambió a " + elNuevoTexto, Toast.LENGTH_SHORT).show();
    }
});

En este caso TextWatcher es una interfaz, y por lo tanto debemos sobrescribir sus métodos. No recomiendo cambiar el texto (aunque se puede, como dicen los comentarios), sino que aconsejo únicamente leerlo; pero bueno, eso dependerá de nuestras necesidades.

El método que nos importa es el de afterTextChanged que quiere decir algo como “Después de que el texto haya cambiado”. Ahí nos pasan un Editable que trae la información del texto que tiene el EditText.

Lo convertimos a String con toString y lo guardamos dentro de elNuevoTexto. Ya con eso podemos hacer una búsqueda, llamar a otros métodos o cualquier cosa interesante a programar en Android.

En el código, se muestra el nuevo texto en un Toast .

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Resetear GOOJPRT PT-210 MTP-II (Impresora térmica)

El día de hoy vamos a ver cómo restablecer la impresora térmica GOOJPRT PT-210 a…

2 semanas hace

Proxy Android para impresora térmica ESC POS

Hoy voy a enseñarte cómo imprimir en una impresora térmica conectada por USB a una…

2 semanas hace

Android – Servidor web con servicio en segundo plano

En este post voy a enseñarte a programar un servidor web en Android asegurándonos de…

2 semanas hace

Cancelar trabajo de impresión con C++

En este post te quiero compartir un código de C++ para listar y cancelar trabajos…

1 mes hace

Copiar bytes de Golang a JavaScript con WebAssembly

Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…

2 meses hace

Imprimir PDF con Ghostscript en Windows de manera programada

Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…

2 meses hace