我们应该在Kotlin中绑定android视图吗?

我们应该在Kotlin中绑定android视图吗?,android,android-layout,kotlin,Android,Android Layout,Kotlin,编程Java时,我们需要使用findViewById函数来访问视图项,现在在Kotlin中,我们只需使用id来访问视图项,就像我们有一个id为“myTxt”的textView,我们只需使用myTxt.text=“Some text” 另一方面,在Java中使用findViewById函数会导致性能降低,因此建议使用view来提高性能 现在的问题是: 既然我们没有在kotlin中使用findViewById,那么我们应该使用绑定,否则这不会导致任何性能效率 Kotlin中的视图绑定在gradle模

编程Java时,我们需要使用
findViewById
函数来访问视图项,现在在Kotlin中,我们只需使用id来访问视图项,就像我们有一个id为“myTxt”的textView,我们只需使用
myTxt.text=“Some text”

另一方面,在Java中使用
findViewById
函数会导致性能降低,因此建议使用view来提高性能

现在的问题是:

既然我们没有在kotlin中使用
findViewById
,那么我们应该使用绑定,否则这不会导致任何性能效率


Kotlin中的视图绑定在gradle模块中默认启用。要在模块中手动启用视图绑定,请在模块级build.gradle文件中将viewBinding build选项设置为true,如下例所示:

android {

 buildFeatures {
     viewBinding true
  }
}

因此,如果您使用的是Kotlin,那么应该使用视图绑定而不是findViewById。这样做容易得多,代码行的数量也减少了。此外,它也不会影响性能。

获取视图引用的常用方法有三种:

  • findViewById
  • 合成视图属性(仅限Kotlin)
  • 视图绑定
我认为您混淆了视图绑定和合成视图属性

当您在Kotlin中说我们“只使用
id
”,这称为合成视图属性。创建该功能是为了方便使用而不是为了性能

谷歌在某些时候删除了他们文档中对合成视图属性的引用,因为它仅限于Kotlin。它们不是空安全的或类型安全的也不是很好。Kotlin代码中通常需要空安全性。所有视图的所有合成属性都可以从任何位置获得,无论它们是否在当前布局中


后来,他们添加了视图绑定作为Jetpack功能。这也不是为了性能而添加的,而是为了方便。它比
findViewById
更可取,因为它是空安全的,类型安全的,并为您膨胀的确切视图提供属性,不多也不少。视图绑定不限于Kotlin。您可以在Java中使用它。

请注意,合成材料从未被谷歌正式认可。他们已恢复使用findViewById。虽然这篇文章说“谷歌是来提供指导的,但我们作为开发人员可以在我们的代码库中做出自己的选择。”