Android DataBinding 快速入门

作者: EitanLiu | 来源:发表于2016-09-26 09:05 被阅读1113次

    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 国际许可协议进行许可。转载请保留作者及原文链接

    相关文章

      网友评论

        本文标题:Android DataBinding 快速入门

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