温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在Android中使用View Binding方法

发布时间:2021-03-20 15:44:54 来源:亿速云 阅读:247 作者:Leah 栏目:移动开发

这篇文章给大家介绍怎么在Android中使用View Binding方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

使用

View Binding可按模块启用。要在某个模块中启用,在该模块的build.gradle中添加如下配置:

android {
  ...
  viewBinding {
   enabled = true
  }
 }

用法

当某个模块启用View Binding后,系统会为该模块中包含的每个 XML 布局文件各生成一个绑定类。每个绑定类均包含对根视图以及具有id 的所有视图的引用。绑定类的类名是xml的名称后面加“Binding”。

例如,假设某个布局文件名为 比如activity_main.xml:

<LinearLayout ... >
  <TextView android:id="@+id/tvName" />
  <TextView android:text="no id"/>
  <Button android:id="@+id/btnOpen"/>
</LinearLayout>

那么生成的绑定类类名是ActivityMainBinding。这个类有两个成员变量tvName和btnOpen,还包含一个getRoot()方法,返回根视图,此例中返回LinearLayout。

要获取绑定类的实例,可以通过静态 inflate() 方法。

private lateinit var binding: ActivityMainBinding

@Override
fun onCreate(savedInstanceState: Bundle) {
 super.onCreate(savedInstanceState)
 binding = ActivityMainBinding.inflate(inflater)
 setContentView(binding.root)
}

现在,绑定类的实例可用于引用任何视图:

binding.tvName = "name"
binding.btnOpen.setOnClickListener{
 Log.d(TAG,"btnOpen click")
}

区别

  • 与findViewById的区别:空安全和类型安全,不存在因引用了一个错误的id而导致的空指针异常或者类型转换异常。

  • 与databinding的区别:databinding仅处理使用 <layout> 代码创建的数据绑定布局;View Binding不支持布局变量或布局表达式,因此它不能用于在xml中将布局与数据绑定。

  • 与Android Kotlin Extensions的区别:在使用上,后者简单粗暴,直接id进行访问,而View Binding需要创建绑定类的实例;后者有一些不友好的地方,比如相同的id存在于多个xml,容易导错包,如果包导错了,会有可能别的View用错id导致空指针,而View Binding显然不会有这种情况。

关于怎么在Android中使用View Binding方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI