addTextChangedListener()
は、3つの方法とのインタフェースであるTextWatcher
をとります。あなたが書いたことは、TextWatcher
が1つしか方法を持っていなかった場合にのみ働くでしょう。他の2つのメソッドを実装していないラムダに関連するエラーを推測します。 2つの選択肢があります。
1)ラムダを捨てるだけ
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匿名の内部クラスを使用します)あなたはラムダ式使用できるように拡張メソッドを作成します。
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())
}
})
}
をそしてのような拡張機能を使用しますそう:
editText.afterTextChanged { doSomethingWithText(it) }
エラーは何ですか? – voddan