数据绑定(data binding)2

据绑定(Data Binding)-Part2

在之前我们做了一个简单的Twitter客户端,但是简单地介绍ViewHolder实现,可能没有充分地让你明白Data Binding的使用方法。那么我们现在就来看看怎么样将Data Binding引入到项目中。

首先我们要在工程目录下的gradle脚本添加依赖:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

buildscript {

    repositories {

        jcenter()

    }

    dependencies {

        classpath 'com.android.tools.build:gradle:1.3.0'

        classpath "com.android.databinding:dataBinder:1.0-rc1"

    }

}

 

allprojects {

    repositories {

        jcenter()

    }

}

 

在要在使用Data Binding的module下的gradle脚本中添加依赖:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

applyplugin:'com.android.application'

applyplugin:'com.android.databinding'

 

android{

    compileSdkVersion23

    buildToolsVersion"23.0.0"

 

    defaultConfig{

        applicationId"com.stylingandroid.databinding"

        minSdkVersion7

        targetSdkVersion23

        versionCode1

        versionName"1.0"

 

        buildConfigField'String','TWITTER_CONSUMER_KEY',"\"${twitterConsumerKey}\""

        buildConfigField'String','TWITTER_CONSUMER_SECRET',"\"${twitterConsumerSecret}\""

        buildConfigField'String','TWITTER_ACCESS_KEY',"\"${twitterAccessKey}\""

        buildConfigField'String','TWITTER_ACCESS_SECRET',"\"${twitterAccessSecret}\""

    }

    buildTypes{

        release{

            minifyEnabledfalse

            proguardFilesgetDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'

        }

    }

    packagingOptions{

        exclude'META-INF/LICENSE.txt'

    }

    lintOptions{

        disable'InvalidPackage'

    }

}

 

dependencies{

    compile'com.android.support:support-annotations:23.0.0'

    compile'com.android.support:design:23.0.0'

    compile'com.android.support:appcompat-v7:23.0.0'

    compile'com.android.support:recyclerview-v7:23.0.0'

    compile'org.twitter4j:twitter4j-core:4.0.4'

    compile'org.twitter4j:twitter4j-async:4.0.4'

    compile'com.github.bumptech.glide:glide:3.6.1'

}

 

你会发现在后面这个gradle脚本中没有添加data binding依赖——它实际上只是在构建项目的时候附加的工具。

你应该在这个操作方法中领悟到一些东西:实际上Data Binding只是一个代码生成工具,它会在build项目的时候生成一些绑定View和数据对象的模板代码。

在我们的例子中,它解析目标是layout/status_item.xml中的节点。根据布局文件的文件名,它会自动生成一个数据绑定类StatusItemBinding,我们在StatusViewHolder使用的就是这个神秘的类。

之后Data Binding将包装去掉,由于在StatusItemBinding类中已经解析出了属性,它同时也会移除节点,只剩下RelativeLayout。换句话说,它将这个文件变回了普通的XML
layout文件,并添加了一个数据绑定类实时更新其中的内容。

我们再重温一下StatusViewHolder的代码,现在应该明白一点它的运作机制了吧:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

publicclassStatusViewHolderextendsRecyclerView.ViewHolder{

    privateStatusItemBindingbinding;

 

    publicStatusViewHolder(ViewitemView){

        super(itemView);

        binding=DataBindingUtil.bind(itemView);

    }

 

    publicvoidbind(Statusstatus){

        binding.setStatus(status);

    }

 

}

 

DataBindingUtil.bind(itemView)方法会在build的时候自动生成。这时候我们需要做的是在bind(Status
status)
中调用StatusItemBinding的setter方法,将我们在中声明的数据对象(.data.Status)赋值给它。之后我们要显式地调用bind(Status
status)
方法将数据实体与它绑定。

你可以从我们的例子中初步看出数据绑定的效果:

这一切都运作的非常好,就是一个含有三个子view的布局被绑定了,data binding看起来也没为我们省去很多工作,也只是省去了findView与setText()两个操作而已。但是它所能做的并不仅仅是这样!可能有人注意到了我们同时从twitter的API中获取了头像的url,layout中我们没有对ImageView进行绑定。在下一章中我们将会引入Glide来加载图像,并将它与Data
Binding结合起来。

本文章主要用于解释原理,没有添加额外代码。前文中的例子在这里可以看到。

时间: 2024-09-18 03:57:54

数据绑定(data binding)2的相关文章

Silverlight3系列(七)数据绑定 Data Binding 3 数据类型转换 Data Converte

Silverlight3系列(七)数据绑定 Data Binding 3 数据类型转换 Data Converter 7 数据转换 在普通的情况下,数据从后台到前台显示,没有任何变化.看起来是符合逻辑的,但是有可能不是你想要的效果,数据源的数据可能是的低级别的(这里的低级别是说数据比较原始,或者说是数据库可以理解的,不是最终用户可以理解的形式),你不想让他直接显示在界面上.例如:你可能会将数字变成用户可以看懂的形式.或者是想让日期显示成长格式的字符串.如果是这样的话,你需要将数据转换成正确的显示

Android简明开发教程十:数据绑定Data Binding

前面提到AndroidGraphics2DTutorial说过它是ListActivity派生出来的.ListActivity中显示的是ListView,ListView和 Gallery ,Spinner有一个共同点:它们都是AdapterView的子类.AdapterView的显示可以通过数据绑定来实现,数据源可以是 数组或是数据库记录,数据源和AdapterView是通过Adapter作为桥梁.通过Adapter,AdatperView可以显示数据源或处理用户选 取时间,如:选择列表中某项

Silverlight3系列(八)数据绑定 Data Binding 3 数据模板 Data Templates

8 数据模板 数据模板在xaml标记中是比较重要的,它定义了绑定对象如何显示.一共有两种类型的控件支持数据模板: 1)内容控件(具有Content属性的控件)通过ContentTemplate属性支持数据模板.用来显示你放在Content属性中的任何东西. 2)列表控件(从ItemsControl中继承而来的控件)通过ItemTemplate属性支持数据绑定.这个模板用来显示集合(你提供给ItemsSource属性的对象集合)中每一个Item. 列表模板是以内容模板为基础的,就好像ListBox

Silverlight3系列(四)数据绑定 Data Binding 1

今天我们讨论的是Silverlight3中的数据绑定,内容来自 <Pro Silverlight3 in C#>的读后感,中文名称可以译为<Silverlight3高级编程 C#版>.我找到的是一本PDF的,在网上可以搜索到下载地址. 数据绑定提供了一种,从对象中获取信息,然后显示在你的应用程序的界面上,同时不需要写冗长的代码就可以完成所有的工作的方式.通常情况下,富客户端提供两种绑定方式,不仅可以从兑现获取数据,显示到界面上,也可以将界面的数据传回给对象. Silverlight

Silverlight3系列(五)数据绑定 Data Binding 2

接着上面一篇,我们来讨论绑定集合等. 首先看一下可以进行绑定集合的控件属性,暂时我就不翻译了,因为翻译不好,还不如读英文呢. Name Description ItemsSource Points to the collection that has all the objects that will be shown in the list. DisplayMemberPath Identifies the property that will be used to creat the dis

数据绑定(data binding)3

数据绑定(Data Binding)-Part3 原文链接 : Data Binding – Part 3 原文作者 : Mark Allison 译文出自 : 开发技术前线 www.devtf.cn.未经允许,不得转载! 译者 : desmond1121 校对者: desmond1121 勘误:原文中使用ModelView一词,但实际上MVVM是Model-View-ViewModel,故应为ViewModel. 在之前的文章中,我们使用Data Binding与布局中的TextView配合搭

数据绑定(data binding )1

数据绑定(Data Binding)-Part1 原文链接 : Data Binding – Part 1 原文作者 : Mark Allison 译文出自 : 开发技术前线 www.devtf.cn.未经允许,不得转载! 译者 : desmond1121 校对者: desmond1121 2015年的Google I/O大会发布了很多新的Android库和工具,Data Binding就是其中之一.在本系列文章中,我们会探索它的强大之处. 值得注意的是:我写这篇文章的时候,Data Bindi

数据绑定(data binding)

据绑定(Data Binding)-Part2 原文链接 : Data Binding – Part 2 原文作者 : Mark Allison 译文出自 : 开发技术前线 www.devtf.cn.未经允许,不得转载! 译者 : desmond1121 校对者: desmond1121 在之前我们做了一个简单的Twitter客户端,但是简单地介绍ViewHolder实现,可能没有充分地让你明白Data Binding的使用方法.那么我们现在就来看看怎么样将Data Binding引入到项目中.

Android Data Binding数据绑定详解_Android

去年谷歌 I/O大会上介绍了一个非常厉害的新框架DataBinding, 数据绑定框架给我们带来了很大的方便,以前我们可能需要在每个Activity里写很多的findViewById,不仅麻烦,还增加了代码的耦合性,如果我们使用DataBinding,就可以抛弃那么多的findViewById,省时省力.说到这里,其实网上也有很多快速的注解框架,但是注解框架与DataBinding想比还是不好用,而且官网文档说DataBinding还能提高解析XML的速度,其实DataBinding的好用,不仅