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("更新后的值");