1.首先在build.gradle下添加
android {
...
...
...
dataBinding {
enabled true
}
}
2.将页面转换为DataBinding形式
3.然后在Activity中创建binding对象
ActivityMainBinding mActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
4.然后在Activity中获取ViewModel对象
MainViewModelLiveData mMainViewModelLiveData = new ViewModelProvider(this).get(MainViewModelLiveData.class);
5.然后在页面中引入变量
<data>
<variable
name="data"
type="com.example.mylivedata.MainViewModelLiveData" />
</data>
6.改写页面
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{String.valueOf(data.num)}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{()->data.addNum()}"
android:text="Button"
app:layout_constraintBottom_toTopOf="@+id/textView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
7.设置页面中变量
mActivityMainBinding.setData(mMainViewModelLiveData);
8.DataBinding需调用setLifecycleOwner(LifecycleOwner lifecycleOwner)之后,绑定了LiveData数据源的xml控件才会随着数据变化而改变。
mActivityMainBinding.setLifecycleOwner(this);