¿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 unaTextWatcherque es una interfaz con 3 métodos. Lo que escribiste solo funcionaría siTextWatchersolo 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
KAndroidsolución funciona perfectamente.Agregue esta dependencia central de ktx
Simplemente tienes que hacer
passwordEditText.doAfterTextChanged{ }fuente
Espero que este
Kotlinejemplo ayude a dejarlo claro:Con este
XMLdiseñ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
KAndroidbiblioteca -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