使用kotlin在android中绑定视图

时间:2018-04-05 08:26:15

标签: android kotlin

以下两种使用kotlin在android中绑定视图的方法之间的区别是什么?哪一个更好?

TextView tvSelectDistance=findViewById<View>(R.id.tvSelectDistance) as TextView

VS

TextView tvSelectDistance=findViewById<TextView>(R.id.tvSelectDistance) 

3 个答案:

答案 0 :(得分:1)

你应该使用android kotlin ktx插件来简化这个。 将其添加到build.gradle:apply plugin: 'kotlin-android-extensions'

当您使用此插件时,您无需通过yourselft查找视图,只需执行以下操作:

// Instead of findViewById<TextView>(R.id.textView)
textView.setText("Hello, world!")

如需了解更多信息,请点击此URL

如有问题:

在Android中,findViewById会返回View我们需要显式转换为正确的类型(您使用第一种方法执行此操作)。

在你的第二种方法中,你提供一个TextView类型来查找ViewById,这样就不需要输入它了。

答案 1 :(得分:0)

在旧版本的 Android findViewById()中定义为

public View findViewById(@IdRes int id)

因此有必要将其转换为正确的类型。

使用当前版本,它被定义为

public <T extends View> T findViewById(@IdRes int id)

只是通过调用隐式地转换找到的视图。

因此以下选项

TextView tvSelectDistance = findViewById<View>(R.id.tvSelectDistance) as TextView
TextView tvSelectDistance = findViewById<TextView>(R.id.tvSelectDistance)
TextView tvSelectDistance = findViewById(R.id.tvSelectDistance)

在技术上是等同的。但是,不是显式地转换返回值,而是可以使用后两者并且有一些更简洁的代码。

答案 2 :(得分:0)

这应该是正确的方式:

val selectDistanceText: TextView = findViewById(R.id.tvSelectDistance)