1
说明:
1、首先继承BaseObservable类
2、给成员变量的get方法添加@Bindable注解
3、在成员变量的set方法的最后调用方法notifyPropertyChanged,其中里面的参数是在BR类中记录的变量,那些变量就是我们在XML中声明的那些啦,类似于安卓资源管理的R.java文件,不过这里管理的是布局XML的变量,是自动生成的。
在这里我又有问题要问了,之前我的实体类这么简约,现在变这么长,感觉不爽!
那么有没有简约版的呢,因为我很懒不想弄这么多代码?
public class User extends BaseObservable{
public String name;
public int age;
public User(String name,int age){
this.name = name;
this.age = age;
}
@Bindable
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
notifyPropertyChanged(BR.user);
}
@Bindable
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
notifyPropertyChanged(BR.user);
}
}
1.1 实用方法:
public class MainActivity extends AppCompatActivity {
private User myUser;
private ActivityMainBinding myBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
myUser = new User("年龄",4);
myBinding.setUser(myUser);
myBinding.setButtonname("年龄+1");
myBinding.ageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myUser.age++;
myBinding.setUser(myUser);
}
});
}
}
2、使用Observable数据类型
这是一个简约的方法,谷歌为我们提供了基于常用数据类型的Observable类型,就是我们熟悉的数据类型前面加上Observable组成。
例如:
Int类型对应ObservableInt
Boolean类型对应ObservableBoolean
public class User {
public ObservableField<String> name = new ObservableField<>();
public ObservableInt age = new ObservableInt();
public User(String name,int age){
this.name.set(name);
this.age.set(age);
}
}
2.1:实用方法
public class MainActivity extends AppCompatActivity {
private User myUser;
private ActivityMainBinding myBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
myUser = new User("年龄",4);
myBinding.setUser(myUser);
myBinding.setButtonname("年龄+1");
myBinding.ageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myUser.age.set(myUser.age.get()+1);
}
});
}
}
网友评论