Android Data Binding使用笔记
说在前面:先来三个文档,官网文档:https://developer.Android.com/topic/libraries/data-binding/index.html 官网文档的汉化版:http://www.jianshu.com/p/b1df61a4df77 github的第三方文档:https://github.com/LyndonChin/MasteringAndroidDataBinding
1、Java的语言动态属性非常有限,所以这个绑定的实现是依赖于代码生成技术,从技术的角度感觉不是很Nice。官网文档个错误就和静态语言特性有关,比如对Bind设定变量用的是setVariable函数,而不是官方指南的那个函数。用法如下:
- viewDataBinding.setVariable(BR.variable_name,varaible);
2、比如渲染List<SomeTyep>,因为data属性定义里面不能存在“<”">"字符,需要把两个符号换成HTML转义字符串<和>, 而且里面的类型除了Java内建类型,其他的最好写成类全名,否则找不到。
3、如果渲染ImageView则需要运用BindingAdapter特性,先实现一个BindingAdapter:
- @BindingAdapter({"imageUrl"})
- public static void loadImage(ImageView view, String url){
- if (url==null || "".equals(url)){
- view.setImageDrawable(view.getContext().getResources().getDrawable(R.drawable.place_image));
- }else{
- Glide.with(view.getContext()).load(url).into(view);
- }
- }
然后就可以直接渲染url了:
- <ImageView
- xmlns:app="http://schemas.android.com/apk/res-auto"<span style="white-space:pre"> </span>
- android:layout_width="32dp"
- android:layout_height="32dp"
- app:imageUrl="@{user.avatar}"
- />
4、onCreate加载问题:在如果在Activity onCreate中加载网络对象,且布局中有依赖这个对象的bool变量,则可能导致null对象调用错误,估计原因是因为网络加载时异步的,所以视图渲染时,还未传对象导致,解决方法,在网路对象加载前可以传一个占位对象,里面把需要的布尔变量赋值了,充一时(最多几百毫秒)之用。
Android Data Binding使用笔记的更多相关文章
- Android Data Binding代码实践(告别findViewById)(四)
Data Binding实战(一) Data Binding语法解析(二) Data Binding高级用法(三) 好了,继前三篇学习了Data Binding之后,我们可以发现它的强大之处有这么几点 ...
- Android Data Binding实战(一)
在今年Google I/O大会上,Google推出Design Library库的同时也推出了Android Data Binding,那么什么是Data Binding?其名曰数据绑定,使用它我们可 ...
- Android Data Binding Library
Data Binding Library Data Binding Library是一个支持库,允许您使用声明格式(而不是编程)将布局中的UI组件与应用程序中的数据源绑定. 布局通常在调用UI框架方法 ...
- Android Data Binding
Android官方数据绑定框架DataBinding, 1.什么是DataBinding 2.DataBinding基础用法 3.DataBinding原理 4.表达式 5.null检查 6.incl ...
- Android Data Binding(数据绑定)用户指南
Android Data Binding(数据绑定)用户指南 http://www.jianshu.com/p/b1df61a4df77 https://github.com/LyndonChin/M ...
- android data binding jetpack VIII BindingConversion
android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...
- android data binding jetpack VII @BindingAdapter
android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...
- android data binding jetpack VI 清理一些概念。BR 运算表达式
android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...
- android data binding jetpack V 实现recyclerview 绑定
android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...
随机推荐
- Spark Streaming + Flume整合官网文档阅读及运行示例
1,基于Flume的Push模式(Flume-style Push-based Approach) Flume被用于在Flume agents之间推送数据.在这种方式下,Spark Stre ...
- JavaScript压缩工具JSA使用介绍
JavaScript压缩工具JSA使用介绍 JSA绝对是我使用过的JS压缩工具中最上乘的一个.认识它是从ligerUI开始.在ligerUI的QQ讨论组里,大神--ligerUI的作者告诉我他的lig ...
- Linux Debugging(一): 使用反汇编理解C++程序函数调用栈
拿到CoreDump后,如果看到的地址都是????,那么基本上可以确定,程序的栈被破坏掉了.GDB也是使用函数的调用栈去还原"事故现场"的.因此理解函数调用栈,是使用GDB进行现场 ...
- Libgdx1.5.3发布
- API更改:TextField#setRightAlign改成TextField#setAlignment - I18NBundle 现在兼容Android2.2 - 修复GWT反射包括3D粒子 ...
- QGIS编译
一.准备工作 1.下载QGIS源码 最新版本的QGIS源码需要从git上下载.最新的发布版是2.0,下载地址见下.https://github.com/qgis/QGIS/tree/release-2 ...
- 一个 redis 异常访问引发 oom 的案例分析
「推断的前提是以事实为依据.」 这两天碰到一个线上系统的偶尔出现突然堆内存暴涨,这倒不是个什么疑难杂症, 只是过程中有些思路觉得可以借鉴参考,故总结下并写下来. 现象 内存情况可以看看下面这张监控图. ...
- Cocos2D v2.0至v3.x简洁转换指南(一)
在该指南开头,我们假设你应经很熟悉Cocos2d 2.x版本. 我们将指出新版本重要的改变,并且给出一些你已经从Cocos2d 2.x版本中熟知的实现. CCNodes,CCScenes和CCLaye ...
- PSAM 卡的应用 操作方法
PSAM 卡的应用 PSAM 功能 终端安全存储模块 PASM 常用于 脱机交易的 安全认证 脱机交易的流程 1.卡片对持卡人的认证(防止 ...
- android重启代码
首先新建一个app然后添加 android:sharedUserId="android.uid.system" 再添加重启的权限 <uses-permission andro ...
- php opcode缓存
本文移至:http://www.phpgay.com/Article/detail/classid/2/id/61.html 1.什么是opcode 解释器分析代码之后,生成可以直接运行的中间代码,就 ...