Saltar al contenido

Kotlin addTextChangeListener lambda?

Estate atento porque en este artículo vas a encontrar el hallazgo que buscas.

Solución:

addTextChangedListener() toma una TextWatcher que es una interfaz con 3 métodos. Lo que escribiste solo funcionaría si TextWatcher tenía sólo 1 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.

  1. Deshazte de la lambda y solo usa una clase interna anónima
    editText.addTextChangedListener(object : TextWatcher 
      override fun afterTextChanged(s: Editable?) 
      
    
      override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) 
      
    
      override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) 
      
    )
  1. Crea un método de extensión para que puedas usar una expresión lambda:
    fun EditText.afterTextChanged(afterTextChanged: (String) -> Unit) 
        this.addTextChangedListener(object : TextWatcher 
          override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) 
          
    
          override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) 
          
    
          override fun afterTextChanged(editable: Editable?) 
            afterTextChanged.invoke(editable.toString())
          
        )
    

Y luego usa la extensión así:

editText.afterTextChanged  doSomethingWithText(it) 

Agregue esta dependencia de core ktx

implementation 'androidx.core:core-ktx:1.0.0'

simplemente tienes que hacer

passwordEditText.doAfterTextChanged

Un poco viejo, pero usando las extensiones de Android de Kotlin puedes hacer algo así:

editTextRequest.textChangedListener 
            afterTextChanged 
                // Do something here...
            

No se necesita código adicional, solo agregue:

implementation 'androidx.core:core-ktx:1.0.0'

Sección de Reseñas y Valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *