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    
    }    
    //需要一起配置進(jìn)去
    allprojects {        
        repositories {           
             jcenter()        
        }    
    }    
    buildTypes {        
        release {            
            minifyEnabled false            
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        
        }    
    }    
    //databinding的配置
    dataBinding{        
        enabled true    
    }
}

布局文件

布局文件的根節(jié)點(diǎn)不在是Viewgroup而是變成了layout,新增一個(gè)節(jié)點(diǎn)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節(jié)點(diǎn)也支持import屬性

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

build.gradle 中添加的那個(gè)插件 - com.android.databinding會(huì)根據(jù) xml 文件的名稱 Generate 一個(gè)繼承自ViewDataBinding的類涂召。

生成規(guī)則

將我們布局文件的首字母大寫,并且去掉下劃線纲仍,將下劃線后面的字母大寫,加上Binding.
比如xml文件activity_main.xml ->ActivityMainBinding

雙向綁定Observable Binding

目前只支持單項(xiàng)綁定

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

BR是編譯階段生成的一個(gè)類贸毕,功能與 R.java類似郑叠,用 @Bindable標(biāo)記過 getter方法會(huì)在 BR中生成一個(gè) entry
還有更細(xì)粒度的綁定方式

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

數(shù)據(jù)對(duì)象

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末明棍,一起剝皮案震驚了整個(gè)濱河市乡革,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摊腋,老刑警劉巖沸版,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異兴蒸,居然都是意外死亡视粮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門橙凳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蕾殴,“玉大人,你說我怎么就攤上這事痕惋。” “怎么了娃殖?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵值戳,是天一觀的道長。 經(jīng)常有香客問我炉爆,道長堕虹,這世上最難降的妖魔是什么卧晓? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮赴捞,結(jié)果婚禮上逼裆,老公的妹妹穿的比我還像新娘。我一直安慰自己赦政,他們只是感情好胜宇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著恢着,像睡著了一般桐愉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掰派,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天从诲,我揣著相機(jī)與錄音,去河邊找鬼靡羡。 笑死系洛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的略步。 我是一名探鬼主播描扯,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼纳像!你這毒婦竟也來了荆烈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤竟趾,失蹤者是張志新(化名)和其女友劉穎憔购,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體岔帽,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡玫鸟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了犀勒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屎飘。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖贾费,靈堂內(nèi)的尸體忽然破棺而出钦购,到底是詐尸還是另有隱情,我是刑警寧澤褂萧,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布押桃,位于F島的核電站,受9級(jí)特大地震影響导犹,放射性物質(zhì)發(fā)生泄漏唱凯。R本人自食惡果不足惜羡忘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望磕昼。 院中可真熱鬧卷雕,春花似錦、人聲如沸票从。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纫骑。三九已至蝎亚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間先馆,已是汗流浹背发框。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留煤墙,地道東北人梅惯。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像仿野,于是被迫代替她去往敵國和親铣减。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容