我是Kotlin
和Android
的新手。
我在使用TextWatcher
时看到语法时感到困惑:
editTextSample.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) {
txtView1.setText("Text in EditText : "+s)
}
})
你能为我解释一下吗?谢谢
答案 0 :(得分:1)
EditText
类扩展了TextView
类,该类包含名为addTextChangedListener()
的方法。
在这里,您正在创建EditText
类的对象并调用该方法。您需要在哪里传递TextWatcher
接口的对象作为参数。
[保留..但是我们无法创建接口的对象。所以我们在这里 为此,使用了匿名类的概念check this]。
,并且由于接口包含三个方法,因此我们必须全部覆盖它们。就是这样。
答案 1 :(得分:1)
符号object : TextWatcher
只是在这里创建一个匿名类。这只是Kotlin的创建方式。 Kotlin为您提供了更多实现TextWatchers的方法。
您可以导入androidx.core:core-ktx依赖项,该依赖项提供了许多不错的功能。其中之一是针对textwatcher的扩展。使用此功能,您可以将代码简化为:
editTExt.doOnTextChanged { text, start, count, after ->
//Do something here
}