数据绑定差异文本或应用

时间:2018-09-03 16:47:01

标签: android kotlin android-databinding

我正在阅读有关数据连接的android文档https://developer.android.com/topic/libraries/data-binding/?hl=en,发现了这一点:

科特琳

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)函数吗?

1 个答案:

答案 0 :(得分:2)

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

上面的代码等同于

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

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

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