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

Posted 方舟aark

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

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

以上是关于Android开发:关于Databinding与Viewbinding以及kotlin-android-extensions的主要内容,如果未能解决你的问题,请参考以下文章

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

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

android dataBinding详解

Android框架模式——MVVM

Android开发教程 - 使用Data Binding集成与配置

Android之MVVM架构之ViewModel + LiveData + DataBinding