android - 数据绑定(bind)差异文本或应用

标签 android kotlin android-databinding

我正在阅读 android 文档 https://developer.android.com/topic/libraries/data-binding/?hl=en关于数据,我发现了这个:

Kotlin

findViewById<TextView>(R.id.sample_text).apply {
    text = viewModel.userName
}

Java

TextView textView = findViewById(R.id.sample_text);
textView.setText(viewModel.getUserName());

我想知道为什么在 kotlin 中使用 apply 而不是 text(aka setText) 函数?

最佳答案

findViewById<TextView>(R.id.sample_text).apply {
    text = viewModel.userName
} 

上面的代码等同于

val textView  = findViewById<TextView>(R.id.sample_text)
textView.text = viewModel.userName

应用函数是一个作用域函数。它的主要用例是 initialization of objectsBuilder-style usage of methods that return Unit

fun arrayOfMinusOnes(size: Int): IntArray {
    return IntArray(size).apply { fill(-1) }
}

关于android - 数据绑定(bind)差异文本或应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52153694/

相关文章:

Java-FileNotFoundException :/mnt/sdcard: open failed: EISDIR (Is a directory)

android - 如何在android Activity 测试中模拟koin注入(inject)的bean并捕获作为该模拟参数给出的lambda?

kotlin - 即使支持字段可以为空,getter 也会返回不可为空的类型

android - 如何使用 DataBindingUtil 在 Fragment 中绑定(bind) View ?

android - LiveData 无法观察到变化

android - 通过数据绑定(bind)库在 MVVM 架构中使用 Tab 布局

java - 如何从 p12 证书中获取 SHA1 指纹?

android - Kotlin - 如何创建类似于 TextView.setText(String) 的类成员函数,可以调用为 TextView.text = ""

java - 如何在 Kotlin 中使用泛型参数创建列表

java - OrmLite 级联删除