Esta es una respuesta un poco más general con más explicaciones para futuros espectadores.
Agregar un oyente cambiado de texto
Si desea encontrar la longitud del texto o hacer otra cosa después de que se haya cambiado el texto, puede agregar un oyente con texto modificado a su texto de edición.
EditText editText = (EditText) findViewById(R.id.testEditText);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable editable) {
}
});
El oyente necesita una TextWatcher
, que requiere tres métodos para ser anulado: beforeTextChanged
, onTextChanged
, y afterTextChanged
.
Contando los personajes
Puedes hacer que el personaje cuente en onTextChanged
o beforeTextChanged
con
charSequence.length()
o afterTextChanged
con
editable.length()
Significado de los métodos
Los parámetros son un poco confusos, así que aquí hay una pequeña explicación adicional.
beforeTextChanged
beforeTextChanged(CharSequence charSequence, int start, int count, int after)
charSequence
: Este es el contenido del texto antes de que se realice el cambio pendiente. No deberías intentar cambiarlo.
start
: Este es el índice de dónde se insertará el nuevo texto. Si se selecciona un rango, entonces es el índice inicial del rango.
count
: Esta es la longitud del texto seleccionado que se va a reemplazar. Si no se selecciona nada, count
lo será 0
.
after
: esta es la longitud del texto a insertar.
onTextChanged
onTextChanged(CharSequence charSequence, int start, int before, int count)
charSequence
: Este es el contenido del texto después de que se realizó el cambio. No debe intentar modificar este valor aquí. Modifique el editable
in afterTextChanged
si es necesario.
start
: Este es el índice del inicio de dónde se insertó el nuevo texto.
before
: Este es el viejo valor. Es la longitud del texto previamente seleccionado que fue reemplazado. Este es el mismo valor que count
en beforeTextChanged
.
count
: Esta es la longitud del texto que se insertó. Este es el mismo valor que after
en beforeTextChanged
.
afterTextChanged
afterTextChanged(Editable editable)
Al igual onTextChanged
, esto se llama después de que el cambio ya se haya realizado. Sin embargo, ahora el texto puede ser modificado.
editable
: Este es el texto editable de EditText
. Sin embargo, si lo cambia, debe tener cuidado de no entrar en un bucle infinito. Consulte la documentación para más detalles.