¿Cómo se construye una expresión lambda para EditText addTextChangeListener en Kotlin? A continuación se muestra un error:
passwordEditText.addTextChangedListener { charSequence ->
try {
password = charSequence.toString()
} catch (error: Throwable) {
raise(error)
}
}
Respuestas:
addTextChangedListener()
toma unaTextWatcher
que es una interfaz con 3 métodos. Lo que escribiste solo funcionaría siTextWatcher
solo tuvieras un método. Supongo que el error que está recibiendo se relaciona con su lambda que no implementa los otros 2 métodos. Tienes 2 opciones en el futuro.Y luego usa la extensión así:
fuente
fun foo() = ...
)afterTextChanged.invoke(...)
lugar deafterTextChanged(...)
?Un poco antiguo, pero con las extensiones de Android de Kotlin puedes hacer algo así:
No se necesita código adicional, solo agregue:
fuente
KAndroid
solución funciona perfectamente.Agregue esta dependencia central de ktx
Simplemente tienes que hacer
passwordEditText.doAfterTextChanged{ }
fuente
Espero que este
Kotlin
ejemplo ayude a dejarlo claro:Con este
XML
diseño:Y esto
Gradle
:fuente
Pruébalo :
fuente
si lo usa
implementation 'androidx.core:core-ktx:1.1.0-alpha05'
, puede usarhttps://developer.android.com/reference/kotlin/androidx/core/widget/package-summary#extension-functions
fuente
¡Perdón por llegar tarde!
Si agrega
implementation 'androidx.core:core-ktx:1.1.0'
al archivo build.gradle de su módulo, puede usarfuente
Otra alternativa es la
KAndroid
biblioteca -implementation 'com.pawegio.kandroid:kandroid:0.8.7@aar'
Entonces podrías hacer algo como esto ...
Obviamente, es excesivo usar una biblioteca completa para resolver su problema, pero también viene con una gama de otras extensiones útiles que eliminan el código repetitivo en el SDK de Android.
fuente
Puede hacer uso de los parámetros con nombre de kotlin:
fuente
Agregue la dependencia principal de ktx
implementation 'androidx.core:core-ktx:1.3.0'
Y simplemente puedes implementar así
fuente
Esto se ve bien:
fuente