gpt4 book ai didi

android - Kotlin addTextChangeListener lambda?

转载 作者:IT老高 更新时间:2023-10-28 13:21:21 32 4
gpt4 key购买 nike

如何在 Kotlin 中为 EditText addTextChangeListener 构建 lambda 表达式?下面给出一个错误:

passwordEditText.addTextChangedListener { charSequence  ->
try {
password = charSequence.toString()
} catch (error: Throwable) {
raise(error)
}
}

最佳答案

addTextChangedListener() 采用 TextWatcher这是一个具有 3 个方法的接口(interface)。只有当 TextWatcher 只有一种方法时,你写的东西才有效。我猜你得到的错误与你的 lambda 没有实现其他两种方法有关。您有 2 个选择。

  1. 抛弃 lambda,只使用匿名内部类
    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. 创建一个扩展方法,以便您可以使用 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())
}
})
}

然后像这样使用扩展名:

editText.afterTextChanged { doSomethingWithText(it) }

关于android - Kotlin addTextChangeListener lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40569436/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com