DataBinding 使用全面详解
https://juejin.im/entry/59116fd02f301e0057e7e8db
官方文档
https://developer.android.com/topic/libraries/data-binding/index.html#method_references
Android Data Binding(数据绑定)用户指南 (官方文档中文版)
http://www.jianshu.com/p/b1df61a4df77
在xml文件中的写法
绑定
这个时候界面上已经显示出更新的值了
Android Data Binding 系列(一) -- 详细介绍与使用
http://connorlin.github.io/2016/07/02/Android-Data-Binding-%E7%B3%BB%E5%88%97-%E4%B8%80-%E8%AF%A6%E7%BB%86%E4%BB%8B%E7%BB%8D%E4%B8%8E%E4%BD%BF%E7%94%A8/
Databinding 是一个实现数据和UI绑定的框架,是一个实现 MVVM 模式的工具,有了 Data Binding,在Android中也可以很方便的实现MVVM开发模式。
github
https://github.com/LyndonChin/MasteringAndroidDataBinding
https://github.com/ConnorLin/DataBindingDemo
这个不错
http://blog.zhaiyifan.cn/2016/06/16/android-new-project-from-0-p7/
位置
侦听器绑定是在事件发生时运行的绑定表达式。它们与方法引用类似,但它们允许您运行任意数据绑定表达式。此功能适用于Gradle版本2.0及更高版本的Android Gradle插件。 在方法引用中,方法的参数必须与事件侦听器的参数相匹配。在侦听器绑定中,只有您的返回值必须与侦听器的预期返回值相匹配(除非它是期望的void)。例如,您可以有一个演示者类具有以下方法:
Android 数据绑定框架DataBinding,堪称解决界面逻辑的黑科技
http://mp.weixin.qq.com/s?__biz=MjM5NDkxMTgyNw==&mid=405212572&idx=1&sn=e2a84186dccc7661e0644feb38d74f8c&scene=21#wechat_redirect
https://github.com/chiclaim/awesome-android-mvvm(demo中有一个自定义的加载对话框)
比较全面
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0812/3293.html
双向绑定
https://juejin.im/entry/59116fd02f301e0057e7e8db
目前用的demo(下方链接)
http://connorlin.github.io/2016/07/02/Android-Data-Binding-%E7%B3%BB%E5%88%97-%E4%B8%80-%E8%AF%A6%E7%BB%86%E4%BB%8B%E7%BB%8D%E4%B8%8E%E4%BD%BF%E7%94%A8/
有demo
Android Data Binding高级用法-Observable、动态生成Binding Class(三)
Android-MVVM架构-Data Binding的使用 (讲的比较清晰)
http://blog.csdn.net/johnny901114/article/details/50706329
讲的很清楚
http://www.jianshu.com/p/3410420f81ab
把值(modelview与xml)关联起来 通过set方法。
赋值也需要进行set方法,这样xml中才能生效
type 属性就是我们在 Java 文件中定义的 类名称。
如果导入相同的类处理方法:
类型别名
如果我们在 data 节点了导入了两个同名的类怎么办?
<importtype="com.example.home.data.User" /><importtype="com.examle.detail.data.User" /><variablename="user"type="User" />
记住一定要设置才能有“相应”binding.setBtn(this); ()括号中代表当前对象
android:visibility="@{user.isRegister ? View.VISIBLE : View.INVISIBLE}"
user后面跟的是方法名称 isRegister(),其他的也是的
@Bindable 用法,这种方式它会自动找到get方法,来关联起来
@Bindable
publicString getMessageContent() {
returnentity.getMessageContent();
}
<TextView
android:id="@+id/right_msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="10dp"
android:text="@{viewModel.messageContent}"/>
Observable :
通过继承 BaseObservable 实现相应
set进行更新操作 notifyChange()或者 notifyPropertyChanged(intfieldId)
get获取最新的值
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName}"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.lastName}"/>
use.firstName和user.lastName会对应类中(会在xml布局中声明类的全路径com.example.User和变量user)的get方法,特别是当set方法进行了更新通知,会进行更新get方法。这个就是 M层发生改变V层就能显示出来的原因,而连接这个的就是databinding
Observable Objects
Observable是提供添加移除监听的一个java接口,DataBinding基于此接口提供了一个基础类BaseObserable,我们可以这样使用它,通过Bindale注解绑定一个getter,当data属性发生改变在setter中发出通知,这样就实现了响应
http://www.jianshu.com/p/ba4982be30f8
最新
http://www.jianshu.com/p/ba4982be30f8
https://github.com/ConnorLin/DataBindingDemo
方法绑定和监听绑定
 android:onClick="@{handlers::onClickFriend}"
android:onClick="@{() -> presenter.onSaveClick(task)}"
最灵活的方式当然是监听绑定,它允许您为事件监听器提供的回调提供不同的参数。
方法binding 默认会有一个参数 (仅在方法binding中)
而监听binding
方法的参数必须和事件监听器参数相匹配,返回值要是一样的类型
这个写的比较好
http://connorlin.github.io/2016/07/02/Android-Data-Binding-%E7%B3%BB%E5%88%97-%E4%B8%80-%E8%AF%A6%E7%BB%86%E4%BB%8B%E7%BB%8D%E4%B8%8E%E4%BD%BF%E7%94%A8/
关于参数
参数有两种选择:要么不写,要么就要写全。
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@{() -> handler.onTaskClick(task)}" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@{(view) -> handler.onTaskClick(task)}"/>
lambda 表达式可添加一个或多个参数,同时参数可任意命名
public class EventHandler {
public void onTaskClickWithParams(View view, Task task) {
task.run();
}
}
让这个表达式生效的办法
publicclassPresenter{
   publicvoid onSaveClick(View view,Task task){}
}
  android:onClick="@{(theView) -> presenter.onSaveClick(theView, task)}"
http://connorlin.github.io/2016/07/02/Android-Data-Binding-%E7%B3%BB%E5%88%97-%E4%B8%80-%E8%AF%A6%E7%BB%86%E4%BB%8B%E7%BB%8D%E4%B8%8E%E4%BD%BF%
自定义BindingAdapter用法:讲的很清楚
https://zhuanlan.zhihu.com/p/20839659

android datebinding学习相关推荐

  1. java/android 设计模式学习笔记(1)--- 单例模式

    前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...

  2. Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition

    Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition Property animation系统还提供了对ViewGroup中的View改变 ...

  3. android Fragment 学习资料推荐

    为什么80%的码农都做不了架构师?>>>    android   Fragment 学习资料推荐:android大神 郭霖 http://blog.csdn.net/guolin_ ...

  4. android service 学习(上)

    转载自:http://www.cnblogs.com/allin/archive/2010/05/15/1736458.html Service是android 系统中的一种组件,它跟Activity ...

  5. android service 学习(下)

    android service 学习(下) 通常每个应用程序都在它自己的进程内运行,但有时需要在进程间传递对象,你可以通过应用程序UI的方式写个运行在一个不同的进程中的service.在android ...

  6. Android:学习AIDL,这一篇文章就够了(下)

    前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...

  7. Android Binder 学习笔记

    前言: Binder是Android给我们提供的一种跨进程通信方式.理解Binder能帮助我们更好的理解Android的系统设计,比如说四大组件,AMS,WMS等系统服务的底层通信机制就都是基于Bin ...

  8. Android画图学习总结(四)——Animation(中)

    在Android画图学习总结(四)--Animation(上)中详细介绍了Tween Animation的定义.使用,由于篇幅有限,很多中重要的方面没有说明,这篇文章一方面做个完整的总结说明,另外一方 ...

  9. android培训内容明细,记录Android开发学习

    记录Android开发学习 Menu菜单学习 1.掌握Android中菜单的创建. 2.掌握Intent信使组件. 创建菜单Menu 我们模仿微信菜单栏学习,创建一个于微信菜单栏相似的菜单 那么我们应 ...

最新文章

  1. u-boot分析之编译体验(零)
  2. DDNS For RHEL5
  3. 搭建实用深度学习环境(Ubuntu16.10+Theano0.8.2+Tensorflow0.11.0rc1+Keras1.1.0)
  4. opnet平台中切换模块的理解——切换的建模
  5. 阿里巴巴开源的Excel操作神器!
  6. PostgreSQL统计信息的几个重要视图
  7. (194)FPGA上电后IO的默认状态(ISE软件默认为0)
  8. 详解Python切片技术
  9. BZOJ4337 : BJOI2015 树的同构
  10. 某大型银行深化系统之十四:技术架构
  11. Julia :vscode jupyter中更新Julia kernel版本
  12. 高通9008端口刷linux,高通黑砖强制9008_高通救砖9008刷底层
  13. 单片机中常用的C语言编程
  14. 医院计算机,医院计算机
  15. mysql数据库character_关于MySQL如何修改character
  16. 酒店如何实现上网认证的呢
  17. html选项卡出现乱码,html乱码
  18. Android 设备兼容-[Android_YangKe]
  19. 南京地铁6号线双龙街出入口线区间盾构段开工
  20. C语言常见字符串函数、字符分类函数与内存函数的使用

热门文章

  1. python测量信号信噪比
  2. Cinemachine教程 | Unity中如何快速制作镜头晃动?
  3. [专栏精选]Unity动画系统的RootMotion
  4. 在Visual Studio中使用C#脚本(CSX脚本)生成代码
  5. Eclipse 4.16 稳定版发布
  6. 面向初学者的带有MVC API的Android 管理表CRUD MSSQL
  7. JDK/Java 14 可能带来什么新特性?
  8. 使C#代码现代化——第一部分:属性
  9. ionic 父子组件传值
  10. 数据库某个字段增加或减少数量