databinding学习(3)

android databinding目前暂不支持双向绑定 但是提供了 Observable Binding 来得到类似的效果

(1)继承 BaseObservable

public class ObservableUser extends BaseObservable{
    private String firstName;
    private String lastName;

    @Bindable
    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
        notifyPropertyChanged(BR.firstName);
    }

    @Bindable
    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
        notifyPropertyChanged(BR.lastName);
    }
}

BR是变异阶段生成的一个类 类似R.java 当你使用了 @Bindable去标记getter方法, BR中就会生成对应属性的一个entry,你就可以 BR.属性

在setter方法中使用 notifyPropertyChanged方法可以通知系统BR.属性 已经变化需要更新UI

(2)第二种双向绑定的实现方式

public class PlainUser {
    public final ObservableField<String> firstName = new ObservableField<>();
    public final ObservableField<String> lastName = new ObservableField<>();
    public final ObservableInt age = new ObservableInt();
}

更新数据

plainUser.firstName.set(++index +"");

(3) 神奇的 带ID的View 如果你在布局中对View设定了ID 那么你只需要在代码中 在binding对象中直接调用 同ID名的对象直接使用

binding.btnSet.setOnClickListener(new View.OnClickListener() {



转载于:https://my.oschina.net/u/1446823/blog/508634

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值