日志文章

2020-1-5 aflfte2011

dataBinding的使用

首先在Gradle Scripts->build.gradle(Module:app)的defaultConfig下加入dataBinding:
dataBinding{
            enabled true;
        }
也可以写成
dataBinding.enabled=true;
然后在ManiActivity.java中加声明一下binding变量:
ActiyityMainBinding binding;
再将onCreatek 中的setContentView(R.layout.activity_main);换成 binding= DataBindingUtil.setContentView(this,R.layout.activity_main);

然后就可以方便的使用界面中的控件了:
只要使用 binding.控件ID就可以直接使用
activity_main.xml当中会多出一个<data>标签可以用来关连数据:
 <data>
        <variable
            name="data"
            type="com.aflfte.orintation.ViewModelWithLiveData" />//关连ViewModel类的名称

    </data>
这里同步改
<TextView
            android:text="@{String.valueOf(data.likedNumber)}"//让TextView关连ViewModelWithLiveData中的属性值
            app:layout_constraintVertical_bias="0.07999998" />
按钮控件加入
<ImageButton
            android:onClick="@{()->data.addLikedNumber(1)}"//点击时调用ViewModelWithLiveDataaddLikedNumber方法

这样ManiActivity.java中的更新TextView和Button的点击操作代码也可以简化为
viewModelWithLiveData=ViewModelProviders.of(this).get(ViewModelWithLiveData.class);
        binding.setData(viewModelWithLiveData);//这里的set后面的名称与activity_main.xml中的<data>name属性相对应
        binding.setLifecycleOwner(this);

« 使用viewmodelsavedstate保存数据 | ViewModel的使用»