繁体   English   中英

Kotlin中数据绑定的好处?

[英]Benefits of Databinding in kotlin?

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

我在这里找到了答案:

嘿! Google的Android开发者倡导者!

我想在这里添加一些背景。 从未有意“推荐”具有综合视图的Kotlin扩展,但不应将其作为不使用它们的建议。 如果它们正在为您工作,请随时在您的应用中继续使用它们!

我们一直在远离它们(例如,我们不在Udacity课程中教他们),因为它们公开了ID的全局名称空间,该名称空间与实际上没有夸大无效查找的布局无关的ID,仅是Kotlin,并且不当视图仅在某些配置中存在时,不会公开可空性。 这些问题共同导致API增加Android应用程序的崩溃次数。

另一方面,它们确实提供了轻量级的API,可以帮助简化视图查找。 在此空间中,还值得一看的是Data Binding,它也执行自动视图查找-并与LiveData集成以在数据更改时自动更新视图。

如今,在这个领域中有一些可行的选择:

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

在这里阅读注释,有很多开发人员对Kotlin Extensions感到很幸运。 太好了-在寻找继续改进API的方式时,我们会牢记一些事情。 如果您还没有看过数据绑定,那么一定要尝试一下。

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

为了明确起见,直接访问视图和dataBinding是不同的。 在Kotlin之前,我们曾经有一个名为butterknife的库,它确实有助于直接访问视图。

所以回到dataBinding ,它的确切作用是直接将值设置为视图/在xml内获取事件触发器(双向绑定),而不是在activity / fragment类中显式地进行操作。

有什么好处:假设您在版面xml中有20个Textview,则需要将值设置为响应对象中的那些Textview(具有20个对应字段)。

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

2)使用数据绑定,您只需将对象绑定到xml(一个衬里),您的Xml将使用xml内的绑定代码填充各个字段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM