以下两种使用kotlin在android中绑定视图的方法之间的区别是什么?哪一个更好?
TextView tvSelectDistance=findViewById<View>(R.id.tvSelectDistance) as TextView
VS
TextView tvSelectDistance=findViewById<TextView>(R.id.tvSelectDistance)
答案 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)