Kotlin中数据绑定的好处?

时间:2019-05-11 16:29:38

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

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

2 个答案:

答案 0 :(得分:1)

我找到了答案here

  

嘿! Google的Android开发者倡导者在这里!

     

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

     

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

     

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

     

今天,该空间中有一些可行的选择:

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

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

     

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

答案 1 :(得分:1)

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

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

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

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

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