本文共 2201 字,大约阅读时间需要 7 分钟。
1.实现需求
页面上有两个textview,根据传入数据进行数据展示,修改bean后,页面自动更新
DataBinding使用配置
1.app下build.gradle android节点下设置 true
dataBinding{ enabled=true }
2.设置bean
public class User extends BaseObservable { private String name; private String pass; private int viewType; //bean的内部子bean private ObservableListinnerBeans; //设置这个才能自动更新-1 @Bindable public String getName() { return name; } public void setName(String name) { this.name = name; //设置这个才能自动更新-2 notifyPropertyChanged(BR.name); } @Bindable public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; notifyPropertyChanged(BR.pass); } public int getViewType() { return viewType; } public void setViewType(int viewType) { this.viewType = viewType; } public ObservableList getInnerBeans() { return innerBeans; } public void setInnerBeans(ObservableList innerBeans) { this.innerBeans = innerBeans; }}
3.xml
4.建立绑定关系
当在xml使用layout标签后,会自动生成xml名字+Binding的文件,设置view的时候就不再使用setcontenview,而使用其他的,如下:
com.example.testmvvm.databinding.ActivityMainBinding activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
设置数据源
//文字的显示 User user = new User(); user.setName("name"); user.setPass("pass"); activityMainBinding.setUser(user);//点击事件的设置 activityMainBinding.setHandlers(new Handlers(activityMainBinding));
5.点击事件 点击并更新数据;输入变化后更新数据
public class Handlers { private ActivityMainBinding activityMainBinding; public Handlers(ActivityMainBinding activityMainBinding) { this.activityMainBinding = activityMainBinding; } public void clickName(View view){ Log.e("收到name的点击事件","==="); activityMainBinding.getUser().setName("我是更新后的名字"); } public void afterInputChange(Editable editable){ Log.e("收到输入框文字变化事件",""+editable.toString()); activityMainBinding.getUser().setPass(""+editable.toString()); }}
转载地址:http://pxeci.baihongyu.com/