Data Binding

文件配置

注意gradle的配置不能低于1.5.0

android {    
     compileSdkVersion 23   
     buildToolsVersion "23.0.2"    
     defaultConfig {        
          applicationId "com.example.admin.myapplication"        
          minSdkVersion 9        
          targetSdkVersion 23        
          versionCode 1        
          versionName "1.0"        
          multiDexEnabled true    
    }    
    //需要一起配置进去
    allprojects {        
        repositories {           
             jcenter()        
        }    
    }    
    buildTypes {        
        release {            
            minifyEnabled false            
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        
        }    
    }    
    //databinding的配置
    dataBinding{        
        enabled true    
    }
}

布局文件

布局文件的根节点不在是Viewgroup而是变成了layout,新增一个节点data


    
                    
           
        
           
           
    

data节点也支持import属性

 
     
    

build.gradle 中添加的那个插件 - com.android.databinding会根据 xml 文件的名称 Generate 一个继承自ViewDataBinding的类。

生成规则

将我们布局文件的首字母大写,并且去掉下划线,将下划线后面的字母大写,加上Binding.
比如xml文件activity_main.xml ->ActivityMainBinding

双向绑定Observable Binding

目前只支持单项绑定

  • 继承BaseObservable
  • @Bindable
  • notifyPropertyChanged(BR.companyName);

BR是编译阶段生成的一个类,功能与 R.java类似,用 @Bindable标记过 getter方法会在 BR中生成一个 entry
还有更细粒度的绑定方式

public final ObservableField companyName= new ObservableField<>();

数据对象

public class Company extends BaseObservable {    
    private String companyName;        
    @Bindable    
    public String getCompanyName() {        
        return companyName;    
    }    
    @Bindable    
    public void setCompanyName(String companyName) {        
        this.companyName = companyName;  
        notifyPropertyChanged(com.example.admin.myapplication.BR.companyName);    
    }    
}

参考文章:https://github.com/LyndonChin/MasteringAndroidDataBinding
http://blog.csdn.net/qibin0506/article/details/47393725

你可能感兴趣的:(Data Binding)