Sé un poco sobre TextWatcher
eso, pero eso se activa con cada personaje que ingresas. Quiero un oyente que se active cada vez que el usuario termine de editar. ¿Es posible? También en TextWatcher
obtengo una instancia de Editable
pero necesito una instancia de EditText
. ¿Cómo consigo eso?
EDITAR : la segunda pregunta es más importante. Por favor responda eso.
android
android-edittext
textwatcher
puntas
fuente
fuente
Respuestas:
Primero, puede ver si el usuario terminó de editar el texto si
EditText
pierde el foco o si el usuario presiona el botón de listo (esto depende de su implementación y de lo que se ajuste mejor a usted). En segundo lugar, no puede obtener unaEditText
instancia dentro deTextWatcher
solo si ha declaradoEditText
como objeto de instancia. Aunque no debería editar el contenidoEditText
dentro de laTextWatcher
porque no es seguro.EDITAR:
Para poder incluir la
EditText
instancia en suTextWatcher
implementación, debe intentar algo como esto:Tenga en cuenta que la muestra anterior puede tener algunos errores, pero solo quería mostrarle un ejemplo.
fuente
Me molestaba que la implementación de un oyente para todos mis campos EditText requiriera que tuviera un código feo y detallado, así que escribí la siguiente clase. Puede ser útil para cualquiera que se encuentre con esto.
Ahora implementar un oyente es un poco más limpio.
En cuanto a la frecuencia con la que se activa, tal vez se podría implementar una verificación para ejecutar el código deseado
//Do stuff
después de un determinadofuente
Cualquiera que use ButterKnife . Puedes usar como:
fuente
Lo he hecho usando
AutotextView
:fuente
fuente
TextWatcher
no funcionó para mí, ya que siguió disparando para cadaEditText
y arruinando los valores de los demás.Aquí está mi solución:
Por lo tanto, al usar el
getChildAt(xx)
método, puede recuperar cualquier elemento delListView
y obtener el elemento individual usandofindViewById
. Y luego dará el valor más reciente.fuente
Por lo que puedo pensar, solo hay dos formas de hacerlo. ¿Cómo puede saber que el usuario ha terminado de escribir una palabra? Ya sea en el foco perdido o haciendo clic en un botón "Aceptar". No hay forma en mi mente de que puedas saber que el usuario presionó el último carácter ...
Así que llame
onFocusChange(View v, boolean hasFocus)
o agregue un botón y un oyente de clics.fuente
El método Watcher se activa con cada entrada de carácter. Entonces, construí este código basado en el método onFocusChange:
Para usarlo, simplemente llame así:
Puede ignorar la función comS reemplazando! ComS (dat.s, "" + EdTe.getText ()) con la función! Equal. Sin embargo, la función de igual en sí misma en algún momento no funciona correctamente en tiempo de ejecución.
El oyente de onChange recordará los datos antiguos de EditText cuando el usuario se concentre en escribir, y luego comparará los nuevos datos cuando el usuario pierda el foco o salte a otra entrada. Si se compara la cadena antigua no es la misma cadena nueva, se activa el trabajo.
Si solo tiene 1 EditText, entonces tendrá que hacer una función ClearFocus creando un Ultimate Secret Transparente Micro EditText 😸 fuera de las ventanas 😽 y solicite el foco, luego oculte el teclado mediante Import Method Manager.
fuente