【问题标题】:Benefits of Databinding in kotlin?kotlin 中数据绑定的好处?
【发布时间】:2019-05-11 16:29:37
【问题描述】:

我想知道在开发 Android 应用程序时编写额外代码以在 Kotlin 中实现 dataBinding 的好处。 因为 Kotlin 扩展已经允许我们直接访问视图,而不需要 findViewById。

【问题讨论】:

    标签: android kotlin android-databinding kotlin-android-extensions


    【解决方案1】:

    我找到了答案here

    嘿!此处为 Google 的 Android 开发者倡导者!

    我想在这里添加一些背景。具有合成视图的 Kotlin Extensions 从未被故意“推荐”,尽管不应将其视为不使用它们的建议。如果它们对您有用,请随时在您的应用中继续使用它们!

    我们一直在远离它们(例如,我们不在 Udacity 课程中教授它们),因为它们公开了一个与布局无关的全局名称空间,并且当视图仅存在于某些配置中时,不要暴露可空性。总之,这些问题会导致 API 增加 Android 应用的崩溃次数。

    另一方面,他们确实提供了一个轻量级的 API,可以帮助简化视图查找。在这个领域,还值得一看 Data Binding,它还可以进行自动视图查找 - 以及与 LiveData 集成以在数据更改时自动更新您的视图。

    今天,这个领域有几个可行的选择:

    • Data Binding 是视图查找和绑定的建议,但与 Android Kotlin 扩展相比,它确实增加了一些开销。值得一看,看看这是否适合您的应用程序。数据绑定还允许您观察 LiveData 以在数据更改时自动绑定视图。与 Kotlin Extensions 相比,它增加了视图查找和类型安全的编译时检查。
    • Android Kotlin Extensions 不是官方推荐的(与推荐反对不同)。它确实存在上述问题,因此对于我们的代码,我们没有使用它们。
    • Butter Knife 是另一种非常流行的解决方案,适用于 Kotlin 和 Java 编程语言。

    阅读此处的 cmets,许多开发人员都对 Kotlin Extensions 非常满意。这太好了——在我们寻找继续改进 API 的方法时,我们会牢记这一点。如果您还没有看过 Data Binding,一定要试一试。

    顺便说一句,我们的内部代码样式指南不打算直接应用于我们的代码库之外。例如,我们使用 mPrefixVariables,但没有理由让每个应用都遵循这种风格。

    【讨论】:

    • 这和解释值得获得多个荣誉!!。太好了……
    【解决方案2】:

    为了澄清事情,直接访问视图和数据绑定是不同的。在 kotlin 之前,我们曾经有一个名为 butterknife 的库,它确实有助于直接访问视图。

    所以回到 dataBinding,它的作用是直接将值设置到视图/在 xml 中获取事件触发器(双向绑定),而不是在活动/片段类中显式执行。

    有什么好处:假设您的布局 xml 中有 20 个 Textview,您希望将值设置为来自响应对象的那些 textview(具有 20 个相应字段)。

    1)没有数据绑定,你需要访问每个视图并从对象中设置值(所以 20 行代码)。

    2) 使用数据绑定,您只需将对象绑定到 xml(一行),您的 Xml 将使用 xml 中的绑定代码填充相应的字段。

    【讨论】:

      猜你喜欢
      • 2013-05-22
      • 2016-06-19
      • 2015-09-05
      • 1970-01-01
      • 2016-08-14
      • 2010-12-23
      • 2018-09-28
      • 1970-01-01
      • 2017-09-01
      相关资源
      最近更新 更多