DataBinding 的導(dǎo)入
DataBinding有兩種導(dǎo)入方式,
(1). gradle版本大于1.5.0的版本,只需修改當前工程的build.gradle文件,指定啟用DataBinding蔼夜,系統(tǒng)會自動導(dǎo)入許多DataBinding包
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
//開啟DataBinding
dataBinding {
enabled true;
}
}
Android Studio 1.5 版本時(具體是Gradle版本還是Studio問題就不探究了),如果需要使用到相應(yīng)的類压昼,必須在dependencies中自己導(dǎo)入相應(yīng)引用庫求冷,一般會用到的大致如下
com.android.databinding:library:1.1
com.android.databinding:baseLibrary:1.1
com.android.databinding:adapters:1.1
(2). 如果gradle版本小于1.5.0或者要指定DataBinding的版本就比較麻煩了,并且新版本已經(jīng)放棄使用了(僅支持1.0-rc0到rc4,當考古來研究吧),首先在項目的buildscript添加引用的版本
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
classpath "com.android.databinding:dataBinder:1.0-rc4"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
然后在工程的gradle文件加入apply plugin: 'com.android.databinding'
即可使用了
DataBinding 的簡單應(yīng)用
如果只是剛接觸并想快速使用,不深入了解是很簡單的窍霞,DataBinding可以讓你省去煩人findViewById匠题,雖然有些浪費它的功能。
這方法很簡單但金,只需在布局文件最外圍為加入<layout></layout>
系統(tǒng)會根據(jù)布局文件名字生成對應(yīng)的類文件
<layout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="silicar.sample.MainActivity">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"/>
</RelativeLayout>
</layout>
然后通過DataBindingUtil獲取對應(yīng)布局類使用
// 在Activity設(shè)置布局時
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
binding.name.setText("hello word");
//在ListView或RecycleView等Adapter中
ActivityMainBinding bindings = DataBindingUtil.inflate(getLayoutInflater(), R.layout.activity_main, null, false);
DataBinding 存在的問題
AS 1.5版本經(jīng)常出現(xiàn)錯誤需要重新Mark Project
韭山,還未使用的不推薦,等穩(wěn)定后再使用冷溃,butterknife配合插件使用還是更方便钱磅,另外Kotlin也是不錯的選擇。
最新版AS 2.2已經(jīng)不存在該問題了似枕,并且要使用DataBinding相關(guān)類的使用盖淡,也不需要在導(dǎo)入相應(yīng)的引用庫,是時候開始全面推廣了菠净,它可不只是讓你省去findViewById那么簡單禁舷,畢竟是Google親兒子會持續(xù)維護,而Kotlin的Andorid擴展插件只能在Kotln項目使用毅往。本來已經(jīng)放棄DataBinding了牵咙,更新Studio嘗試了下,Bug已修復(fù)那就愉快的玩耍吧攀唯,DataBinding的用法之后繼續(xù)洁桌,同時我們可以基于它的特點對ListView的Adapter進行優(yōu)化。
本作品采用知識共享署名-非商業(yè)性使用-相同方式共享 4.0 國際許可協(xié)議進行許可侯嘀。轉(zhuǎn)載請保留作者及原文鏈接