Jetpack笔记之Databinding+ViewModel绑定ViewModel

1,161

遗忘对于大部分人来说真的是一件太过理所当然,难以避免的事情。

然而在学习工作时遗忘真的是一件非常影响效率的事情,好记性不如烂笔头,为 避免今后遇到类似情况还得重新去各种网站寻找解答,也为了对自己的学习生活有一个记载,所以我决定开始写我第一篇博客。

万事开头难,初来乍到,先记录一篇关于databinding的配置问题吧。

当你要使用databinding时,首先得在app下的build.gradle文件下的android{..}目录下配置这些

buildFeatures{
     dataBinding = true
     viewBinding = true
}

之后,alt+enter在layout文件头插入databinding结构,再去activity或者其他控制文件声明绑定。

databingding的主要用处是双向绑定,首先在对应的布局xml文件中写一个variable变量,name是名称,type就是变量类型。

<data>
    <variable
        name="jeeyu"
        type="com.example.databindingtest01.MyViewModel" />
</data>

之后,在一些小view控件例如Textview,Button之类的属性

android:text="@{String.valueOf(jeeyu.number)}"

number 是type属性的类中的方法, jeeyu是name属性自己命名

android:onClick="@{()->jeeyu.add()}"

此处,jeeyu是name,而add是type对应的类中的方法

databinding获取layout布局以及绑定ViewModel最重要的四句话

binding= DataBindingUtil.setContentView(this,R.layout.activity_main);//设置获取layout
model=new ViewModelProvider(this).get(MyViewModel.class);//此处是将ViewModel类传入
binding.setJeeyu(model);//指定具体的值给model
binding.setLifecycleOwner(this);//如果不设置,livedata将不起作用