当前位置: 首页 > 知识库问答 >
问题:

Kotlin Android视图绑定:findViewById vs Butternife vs Kotlin Android扩展

郎飞龙
2023-03-14

我正试图找出在Kotlin中进行Android视图绑定的最佳方法。似乎有几个选择:

val button: Button by lazy { findViewById<Button>(R.id.button) }
@BindView(R.id.button) lateinit var button: Button
import kotlinx.android.synthetic.main.activity_main.*

我对java中的findViewById和Butternife非常熟悉,但是在Kotlin中,每种视图绑定方法的优缺点是什么?

Kotlin Android扩展能很好地使用RecycerView+ViewHolder模式吗?

另外,Kotlin Android扩展如何通过include处理嵌套视图的视图绑定?

<...>
    <include layout="@layout/custom" android:id="@+id/custom" />
</>
<...>
    <View android:id="@+id/custom1" ... />
    <View android:id="@+id/custom2" ... />
</>

共有1个答案

童铭晨
2023-03-14

kotlin-android-extensions更适合kotlin。Butternife也不错,但是kotlin-android-extensions是更好、更明智的选择。

原因:Kotlin使用合成属性,这些属性使用缓存函数按需调用(因此活动/片段加载速度稍快),而Butterknife.bind()每次绑定所有视图(这消耗的时间稍多)。使用Kotlin,您甚至不需要使用注释来绑定视图。

是的,它也适用于RecycerView+ViewHolder模式,您只需导入kotlinx.android.synthetic.main.layout_main.view.*(如果layout_main.xml是活动/片段布局文件名)。

您不需要为使用include导入的布局做任何额外的工作。只需使用导入视图的id。

请参阅以下官方文件说明:

Kotlin Android Extensions是Kotlin编译器的插件,它有两个功能:

class MyActivity : Activity()
fun MyActivity.a() { 
    this.textView.setText(“”)
}
fun Activity.b() { 
    this.textView.setText(“”)
}

链接到上面的文档页面

希望能有所帮助。

 类似资料:
  • 我正在尝试在Kotlin和碎片中做视图绑定。 但是当它有很多对象的时候。我需要给它下个定义。所以我不得不看: Kotlin Android视图绑定:findViewById vs Butternife vs Kotlin Android扩展 和 但是我在Android Studio中找不到 我可以在我的程序中做什么?

  • 我一直在关注YT视频制作测验应用程序,但最终我在绑定时遇到了这个错误: “kotlin android extensions”Gradle插件已被弃用 请使用本迁移指南(https://goo.gle/kotlin-android-extensions-deprecation)开始使用视图绑定的步骤(https://developer.android.com/topic/libraries/vie

  • 我正在将一个kotlin库绑定到xamarin android,绑定并解决所有错误后,我得到了一个意外错误,没有任何解释或异常原因, JAVALang.NoClassDefFoundError:“未能解析:Landroidx/viewbinding/viewbinding;” 这是我得到的堆栈痕迹: MAYActivity.cs:40在Android。App.活动。n_OnCreate_Landr

  • 很多时候,在制作网页时,我们希望在其他页面中重复某些页面。 CakePHP具有这样的功能,可以在另一个视图中扩展视图,为此,我们不需要再次重复代码。 extend()方法用于扩展View文件中的View 。 此方法采用一个参数,即带路径的视图文件的名称。 提供View文件的名称时,请勿使用扩展名.ctp。 例子 (Example) 在config/routes.php文件中进行更改,如以下程序所示

  • 本文向大家介绍backbone.js 绑定到现有HTML的视图,包括了backbone.js 绑定到现有HTML的视图的使用技巧和注意事项,需要的朋友参考一下 示例 假设此HTML在页面中: 一个视图可以绑定到它: 浏览器中的HTML现在将显示: