Android MVVM 初探之 DataBinding 双向绑定

本文介绍了Android中的MVVM架构模式和DataBinding库的使用,特别是DataBinding的双向绑定功能。通过示例展示了如何实现属性双向绑定,以及如何更方便地处理事件响应,包括Method Binding和Listener Binding。此外,还提到了事件绑定的灵活性和对不同View类型的适应性。
摘要由CSDN通过智能技术生成

摘要
在google 刚推出 DataBinding 时是只支持单向绑定的,也即数据可以显示到 View 上来,而 View 上进行更新却不能同步到 数据上去。而现在则可以。
除数据外,在响应事件上也比原来更加方便,快捷。

属性双向绑定示例
效果:
MVVM DataBinding
代码: Setting.java

public class Setting extends BaseObservable{
   
    private boolean voiceOn = false;
    private boolean vibrateOn = false;
    private boolean cacheEnable = false;
    private int cacheSize = 0;

    @Override
    public void notifyPropertyChanged(int fieldId) {
        super.notifyPropertyChanged(fieldId);
        if (fieldId != BR.description){
            notifyPropertyChanged(BR.description);
        }
    }

    @Bindable
    public void setCacheEnable(boolean cacheEnable) {
        this.cacheEnable = cacheEnable;
        notifyPropertyChanged(BR.cacheEnable);
    }

    @Bindable
    public void setCacheSize(int cacheSize) {
        this.cacheSize = cacheSize;
        notifyPropertyChanged(BR.cacheSize);
    }

    @Bindable
    public void setVibrateOn(boolean vibrateOn) {
        this.vibrateOn = vibrateOn;
        notifyPropertyChanged(BR.vibrateOn);
    }

    @Bindable
    public void setVoiceOn(boolean voiceOn) {
        this.voiceOn = voiceOn;
        notifyPropertyChanged(BR.voiceOn);
    }

    @Bindable
    public int getCacheSize() {
        return cacheSize;
    }

    @Bindable
    public boolean isCacheEnable() {
        return cacheEnable;
    }

    @Bindable
    public boolean isVibrateOn() {
        return vibrateOn;
    }

    @Bindable
    public boolean isVoiceOn() {
        return voiceOn;
    }

    @Bindable
    public String getDescription(){
        return this.toString();
    }

    @Override
    public String toString() {
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(this.getClass().getSimpleName());
        stringBuilder.append(": ");
        stringBuilder.append("\nvibrateOn:");
        stringBuilder.append(vibrateOn);
        stringBuilder.append("\nvoiceOn:");
        stringBuilder.append(voiceOn);
        stringBuilder.append("\ncacheEnable: ");
        stringBuilder.append(cacheEnable);
        if (cacheEnable){
            stringBuilder.append("\ncacheSize: ");
            stringBuilder.append(cacheSize);
        }
        return stringBuilder.toString();
    }

}

对应的xml 文件: activity_syn.xml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值