请选择 进入手机版 | 继续访问电脑版

ViewBinding的简单使用

[复制链接]
为你演绎 发表于 2021-1-2 11:49:32 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
前言

Kotlin插件于1.4.20中提出废弃,谷歌留给了我们一年的时间举行修改替换,怎么办呢?已经习惯了以前直接使用xml中的id作为view使用了,岂非要回到findViewById的时代?怎么大概,还不赶紧拥抱ViewBinding的度量。
谷歌也深知Kotlin插件的毛病,好比:


  • 通过 Kotlin 合成方法(Synthetic 视图)取代 findViewById,这是通过全局空间缓存 ID,与 Layout
    无关,没有针对 ID 举行无效查抄
  • 在差异的 Layout 文件中,使用了相同的 ID,大概删除了 ID ,它并不会提示空异常,导致增加了 App 的瓦解次数
  • 仅仅支持 Kotlin
  • 默认是通过 HashMap 缓存 ID 浪费空间,虽然可以通过在模块级 build.gradle 文件内添加
    defaultCacheImplementation = “SPARSE_ARRAY” 来修改默认的实现方式为 SparseArray

ViewBinding办理了上述问题,但是同时带来其他毛病:


  • ViewBinding 相比于 kotlinx.android.synthetic 使用方式比力复杂
  • 在 Activity 、 Fragment 、Dialog 、 Adapter 中 ViewBinding 和 DataBinding
    初始化方式有些差异 需要单独处置处罚 include 带 merge 标签的结构,和不带 merge 标签的结构等等
  • DataBinding 联合 LiveData 一起使用需要做单独的处置处罚

不外对于视图绑定,也有方便的写法,快一起来见地一下吧。
使用

首先在Gradle插件中声明使用
  1. // Android Studio 3.6android {    viewBinding {        enabled = true    }    dataBinding{        enabled = true    }}// Android Studio 4.0android {    buildFeatures {        dataBinding = true        viewBinding = true    }}
复制代码
其次,为了便捷的一行代码直接使用ViewBinding,我们还需要引入
  1. implementation 'com.hi-dhl:binding:1.0.5'
复制代码
然后直接在Activity、Fragment、Adapter等需要使用的地方使用
  1. class HomeFragment : Fragment() {        //一行代码,FragmentHomeBinding 是对应的Fragment或Activity自动对应的Binding,和自己界说的名字有关    private val binding: FragmentHomeBinding by viewbind()    private var count = 0    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {        return inflater.inflate(R.layout.fragment_home, container, false)    }    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {        super.onViewCreated(view, savedInstanceState)        //click为xml中的id        binding.click.setOnClickListener {            count++            //dashboardView为xml中的id            binding.dashboardView.setPointer(count % 21)        }    }}
复制代码
结构文件xml
  1.                         
复制代码
之后只需要像kotlin插件那样用binding调用对应的id就好啦,是不是一行代码直接使用viewbinding了?是不是很方便?赶紧在kotlin插件停用之前替换掉吧。

来源:https://blog.csdn.net/qq_39168470/article/details/112007146
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )