美文网首页
Data Binding

Data Binding

作者: Ted_Wang | 来源:发表于2016-07-12 15:35 被阅读0次

    文件配置

    注意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

    <?xml version="1.0" encoding="utf-8"?>
    <layout xmlns:android="http://schemas.android.com/apk/res/android" >    
        <data>                
            <variable           
                 name="company"           
                 type="com.example.admin.myapplication.Company" />   
         </data>   
        <LinearLayout       
            android:orientation="vertical"       
            android:layout_width="wrap_content"       
            android:layout_height="wrap_content"       >       
            <TextView          
                android:layout_width="wrap_content"           
                android:layout_height="wrap_content"           
                android:text="@{company.companyName}"/>   
        </LinearLayout>
    </layout>
    

    data节点也支持import属性

    <data> 
        <import type="com.example.admin.myapplication.Company" /> 
        <variable name="company" type="Company" />
    </data>
    

    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<String> 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

          本文链接:https://www.haomeiwen.com/subject/wbtjjttx.html