Android开发:关于Databinding与Viewbinding以及kotlin-android-extensions

Databinding是我在java时期最喜欢用的一种获得xml控件id的工具,但是他只比findViewbyId简单一些,每一次新建一个fragment我都需要针对性地配置一遍Databinding。

我们先来看一看Databinding的用法:

首先在build.gradle中的defaultConfig加入

dataBinding.enabled = true

刷新后在Fragment的onCreateView用法模版(配置)如下

FragmentFinishpayBinding binding;
        binding = DataBindingUtil.inflate(inflater,R.layout.fragment_finishpay,container,false);


        return binding.getRoot();

===

随后我转入kotlin开发,这时候了解了一个极其方便的工具,kotlin-android-extensions。他甚至什么都可以不用写,直接写id就可以调用。

然而现在谷歌技术迭代实在太快,kotlin-android-extensions这一技术居然已经被谷歌列为过时技术。如果还想要用,那么需要在build.gradle中的plugins加入

id ‘kotlin-android-extensions’

即可直接使用,无需任何配置。

然而还是被废弃,原因如下:

在这里插入图片描述

===

谷歌作为kotlin-android-extensions替换,推荐的技术为Viewbinding。

我们需要在build.gradle中的android加入

buildFeatures {
        viewBinding true
    }

刷新后在Activity用法模版(配置)如下

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        
    }

}


接着可以使用形如:

binding.textView.text = “Hello”

在Fragment用法模版(配置)如下

class MainFragment : Fragment() {

    private var _binding: FragmentMainBinding? = null

    private val binding get() = _binding!!

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
        _binding = FragmentMainBinding.inflate(inflater, container, false)
        return binding.root
    }

    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    }

}

如果有些布局文件你不希望为它生成对应的Binding类,可以在该布局文件的根元素位置加入如下声明:

<LinearLayout
    xmlns:tools="http://schemas.android.com/tools"
    ...
    tools:viewBindingIgnore="true">
    ...
</LinearLayout>

其他的情况可以自己针对性查找。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值