时间:2021-05-21
从 Android Studio 3.6 开始,视图绑定能够通过生成绑定对象来替代 findViewById,从而可以帮您简化代码、移除 bug,并且从 findViewById 的模版代码中解脱出来。
本文梗概
腾讯视频链接
https://v.qq.com/x/page/h0931mdo8ly.html
Bilibili 视频链接
https:///optimizing-bytecode-by-manipulating-source-code/
对使用 <include> 标签引入的布局会发生什么影响
前面已经讲过,视图绑定会为 Module 下的每一个布局文件生成一个绑定对象,这个说法在布局文件被另一个布局文件使用 <include> 引入时依然适用。
<!-- activity_awesome.xml --><androidx.constraintlayout.widget.ConstraintLayout> <include android:id="@+id/includes" layout="@layout/included_buttons"</androidx.constraintlayout.widget.ConstraintLayout><!-- included_buttons.xml --><androidx.constraintlayout.widget.ConstraintLayout> <Button android:id="@+id/include_me" /></androidx.constraintlayout.widget.ConstraintLayout>△ 视图绑定中使用 include 标签的示例
注意: include 标签下有一个 id。
在使用引入布局的时候,视图绑定会创建一个被引入布局绑定对象的引用。注意 <include> 标签有一个 id: android:id="@+id/includes"。这里的逻辑跟使用普通视图一样, <include> 标签也需要有一个 id 才能在绑定对象中生成对应的属性。
include 标签必须有一个 id,才能生成对应的属性。
public final class ActivityAwesomeBinding implements ViewBinding { ... @NonNull public final IncludedButtonsBinding includes;视图绑定会在 ActivityAwesomeBinding 中生成一个 IncludedButtonsBinding 的引用。
结合数据绑定来使用视图绑定
视图绑定只是 findViewById 的取代方案,如果您希望在 XML 中自动绑定视图,可以使用数据绑定库。数据绑定和视图绑定可以生成同样的组件,它们可以同时工作。
在两者都被开启时,使用 <layout> 标签的布局会由数据绑定来生成绑定对象;而其余的布局则由视图绑定生成绑定对象。
您可以在同一 Module 中同时使用数据绑定和视图绑定。
我们之所以开发视图绑定作为数据绑定的补充,是因为许多开发者反映说,希望有一个轻量的解决方案,能在数据绑定之外替代 findViewById——视图绑定提供的正是这一功能。
数据绑定
https://developer.android.google.cn/topic/libraries/data-binding
视图绑定对比 Kotlin 合成方法与 ButterKnife
关于视图绑定,一个最常见的问题是: "我是否应该用视图绑定替代 Kotlin 合成方法或 ButterKnife ? " 二者都是目前十分成功的组件库,有许多应用使用它们解决 findViewById 的问题。
对于大多数应用来说,我们推荐尝试使用视图绑定来替代这两个库,因为视图绑定可以提供更加安全和准确的视图映射方式。
△ 视图绑定空安全、只引用当前布局中的视图、支持 Java 和 Kotlin,同时也更简洁
上图为对比视图绑定、ButterKnife 和 Kotlin 合成方法的功能。
虽然 ButterKnife 会在运行时校验可空与不可空,但是编译器并不会检查您匹配的视图是否在存在于您的布局之中。
为了安全性与更简洁代码,我们推荐尝试使用视图绑定。
总结
到此这篇关于Android Studio 3.6中使用视图绑定替代 findViewById的方法的文章就介绍到这了,更多相关使用视图绑定替代 findViewById内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Android资源id详解我们平时获取资源是通过findViewById方法进行的,比如我们常在onCreate方法中使用这样的语句:btnChecked=(I
ButterKnife算是一款知名老牌Android开发框架了,通过注解绑定视图,避免了findViewById()的操作,广受好评!由于它是在编译时对注解进行
前面写过了使用ViewFlipper和ViewPager实现屏幕中视图切换的效果(ViewPager未实现轮播)附链接:ANDROID中使用VIEWFLIPPE
根据jQuery的官方描述,live方法在1.7中已经不建议使用,在1.9中删除了这个方法。并建议在以后的代码中使用on方法来替代。 on方法可以接受三个参数
【问题描述】Android中如下代码:LinearLayoutgroupPollingAddress=(LinearLayout)findViewById(R.