MVVM(DataBinding+ViewModel+LiveData)架构笔记
1.点击事件:
不带参数: @{()->vm.onClick() 带参数: @{()->vm.click(obj.id)} 带view的参数: @{(view)->()vm.click(obj,view)} //view是被点击的视图
2.事件绑定:
单向绑定: @{vm.msg} ; 双向绑定: @={vm.msg}
3.DataBinding使用:
//activity里面使用:
ActivityMainBinding binding = DataBindingUtil.setContentView(MainActivity.this, R.layout.activity_main);
//fragment里面使用:
FragmentPersonalBinding mBinding = DataBindingUtil.bind(inflater.inflate(R.layout.fragment_personal, container));
4.ViewModel使用:
Activity的onCreate中增加:
//不带参数: MyViewModel model = ViewModelProviders.of(activity).get(MyViewModel.class); //带参数: MyViewModel model = ViewModelProviders.of(activity,factory).get(MyViewModel.class);
布局中添加:
<data>
<variable
name="vm"
type="com.sf.nwmsrf.pad.buz.login.MyViewModel" />
</data>
Activity的onCreate中增加:
//给xml绑定model: getBinding().setVm(model);
5.LiveData使用:
Activity的onCreate中增加:
getBinding().setLifecycleOwner(this);
ViewModel中增加:
private MutableLiveData<String> msg = new MutableLiveData<>();
public MutableLiveData<String> getMsg () {
return msg;
}
使用下面方法即可实现数据更新:
// setValue和postValue的区别: setValue只可以在主线程中调用。postValue可以在主线程或者子线程中调用,但是数据只会由主线程执行更新。
msg.setValue("更新后的值");
//或
msg.postValue("更新后的值");
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
HarmonyOS支持的手机型号汇总
