当前位置:   article > 正文

Android开发:关于Databinding与Viewbinding以及kotlin-android-extensions_kotlin viewmodebinding databinding

kotlin viewmodebinding databinding

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();
  • 1
  • 2
  • 3
  • 4
  • 5

===

随后我转入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
    }
  • 1
  • 2
  • 3

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

class MainActivity : AppCompatActivity() {

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

}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

接着可以使用形如:

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
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

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

<LinearLayout
    xmlns:tools="http://schemas.android.com/tools"
    ...
    tools:viewBindingIgnore="true">
    ...
</LinearLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/319991
推荐阅读
相关标签
  

闽ICP备14008679号