addTextChangedListener()
prend un TextWatcher
qui est une interface avec les 3 méthodes. Ce que vous avez écrit ne fonctionne que si TextWatcher
avait seulement 1 méthode. Je vais deviner l'erreur que vous obtenez se rapporte à votre lambda ne pas mettre en œuvre les 2 autres méthodes. Vous avez 2 options.
1) le Fossé le lambda et il suffit d'utiliser un anonyme intérieur de la classe
editText.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(p0: Editable?) {
}
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
})
2) Créer une méthode d'extension de sorte que vous pouvez utiliser une expression lambda:
fun EditText.afterTextChanged(afterTextChanged: (String) -> Unit) {
this.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun afterTextChanged(editable: Editable?) {
afterTextChanged.invoke(editable.toString())
}
})
}
Et puis utiliser l'extension de la sorte:
editText.afterTextChanged { doSomethingWithText(it) }