addTextChangedListener()
需要TextWatcher
这与3种方法的接口。你写的只有在TextWatcher
只有1个方法的情况下才有效。我要猜测你得到的错误与你的lambda没有实现其他两种方法有关。你有两个选择前进。
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)创建的扩展方法,以便可以使用一个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())
}
})
}
然后使用扩展像所以:
editText.afterTextChanged { doSomethingWithText(it) }
它给出了什么错误? – voddan