DataBinding
timshinlee
这个作者很懒,什么都没留下…
展开
-
DataBinding(一)基础
1. 导入在module的build.gradle中声明android { dataBinding { enabled true }}如果依赖库中使用了DataBinding,则module也要使用DataBinding才行。Android Gradle Plugin 3.1.0 canary 6提供了另外一种新的DataBinding编译器V...原创 2018-03-23 16:36:58 · 510 阅读 · 0 评论 -
DataBinding(二)变量及表达式
1. 概述在DataBinding的布局文件当中,可以引入各种变量,并在布局文件中使用变量表达式,达到数据绑定的效果。引入的变量可以使用完整类名,或者使用标签导包。与Java一样,java.lang的包是默认导入的。具体格式及使用方法如下:<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="h...原创 2018-03-23 16:37:36 · 3405 阅读 · 0 评论 -
DataBinding(三)事件处理
DataBinding可以在XML中使用事件的回调方法名作为属性名(大部分情况下)来处理View分发的事件。比如说View.OnLongClickListener的回调方法是onLongClick,所以这个事件的属性名称就是android:onLongClick。事件的处理可以有两种方式: 1. 方法引用:在事件属性的表达式中调用一个方法,这个方法的签名必须和事件回调方法签名一致。当事件回调...原创 2018-03-23 16:41:04 · 1042 阅读 · 0 评论 -
DataBinding(四)属性设置
1. 默认setter对于设置了DataBinding表达式的XML属性,DataBinding会根据属性表达式的返回值查找该属性的setter方法,比如android:text="@{"str"}"属性是去找setText(String)方法,所以表达式的返回值类型是十分重要的,影响着DataBinding查找的具体方法。如果View不提供某个属性的XML属性,但是其实包含了该属性的se...原创 2018-03-23 16:41:55 · 617 阅读 · 0 评论 -
DataBinding(五)自动更新
虽然使用普通的Java对象就可以把数据绑定到UI界面,但是当数据变动时,UI却不会及时更新,所以DataBinding提供了observable objects、observable fields、observable collections来达到自动更新的效果。observable objects如果一个类实现了android.databinding.Observable接口,则Da...原创 2018-03-23 16:42:12 · 1155 阅读 · 0 评论 -
DataBinding(六)数据转换
当一个对象从binding表达式中返回的时候,就会自动去查找默认、重命名或自定义的setter。然后该对象会被转型成为所选setter的参数类型。这时候对于使用ObservableMaps就很方便,返回的值会自动转换为setter的参数类型,不过如果可能产生混淆的话,还是需要手动去转型。<TextView android:text='@{userMap["lastName"]}...原创 2018-03-23 16:43:26 · 2827 阅读 · 0 评论 -
DataBinding(七)tips
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.firstName, default=`I am a placeholder`}"/>使用default属性设置AndroidStudio预览面板中的默认显示内容,...原创 2018-03-23 16:43:54 · 125 阅读 · 0 评论