DataBinding 的导入
DataBinding有两种导入方式,
(1). gradle版本大于1.5.0的版本,只需修改当前工程的build.gradle文件,指定启用DataBinding,系统会自动导入许多DataBinding包
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
//开启DataBinding
dataBinding {
enabled true;
}
}
Android Studio 1.5 版本时(具体是Gradle版本还是Studio问题就不探究了),如果需要使用到相应的类,必须在dependencies中自己导入相应引用库,一般会用到的大致如下
com.android.databinding:library:1.1
com.android.databinding:baseLibrary:1.1
com.android.databinding:adapters:1.1
(2). 如果gradle版本小于1.5.0或者要指定DataBinding的版本就比较麻烦了,并且新版本已经放弃使用了(仅支持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 的简单应用
如果只是刚接触并想快速使用,不深入了解是很简单的,DataBinding可以让你省去烦人findViewById,虽然有些浪费它的功能。
这方法很简单,只需在布局文件最外围为加入<layout></layout>
系统会根据布局文件名字生成对应的类文件
<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获取对应布局类使用
// 在Activity设置布局时
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版本经常出现错误需要重新Mark Project
,还未使用的不推荐,等稳定后再使用,butterknife配合插件使用还是更方便,另外Kotlin也是不错的选择。
最新版AS 2.2已经不存在该问题了,并且要使用DataBinding相关类的使用,也不需要在导入相应的引用库,是时候开始全面推广了,它可不只是让你省去findViewById那么简单,毕竟是Google亲儿子会持续维护,而Kotlin的Andorid扩展插件只能在Kotln项目使用。本来已经放弃DataBinding了,更新Studio尝试了下,Bug已修复那就愉快的玩耍吧,DataBinding的用法之后继续,同时我们可以基于它的特点对ListView的Adapter进行优化。
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。转载请保留作者及原文链接
网友评论