DataBinding 笔记
DataBinding 笔记
那些年踩过的坑
非
public类型的变量,getter方法必须有,没有就会报错:Could not find accessor xxx.xxx.FiledName。原理是:DataBinding需要给变量设置值、获取变量的值ObservableXX类型的变量设置值时使用:fieldName.set()方法;在布局文件中获取值时使用:fieldName,在Java文件中获取值时使用filedName.get()(Java文件中,fieldName获取的是对象的地址)所有在布局文件中申明的变量,在使用前,都需要在
Java文件中初始化。比如布局文件中使用了方法,就需要在Java文件中实例化申明了交互方法的类在使用集合时(例如:
ObservableArrayList),如果要指明集合的范型,使用import引入范型的包把正常布局改为
databinding类型的布局的正确姿势:在正常布局的最外面包裹layout;把正常布局根节点上命名空间声明移到layout节点上,把xml:tools的申明必须得移动到layout上,否则布局预览上没有效果;把data节点作为layout节点的第一直接子元素控件
id的值不要相同。如果有相同,在viewpager使用时,按顺序向后翻页没有问题,但是向前翻页,会报错:java.lang.IllegalArgumentException: Wrong state class, expecting View State but received class android.support.v7.widget.RecyclerView$SavedState instead. This usually happens when two views of different type have the same id in the same hierarchy. This view's id is id/common_rv. Make sure other views do not use the same id.使用
BindingAdpter为首个类型的控件定义一个属性,要想让它在Studio的智能提示中出现,需要在res/values/attrs.xml文件中,使用declare-styleable申明自定义属性。属性的名称就是控件的名称(大小写一致),属性里的每个attr节点都代表着自定义的每个属性特殊字符使用:
& - &,< - <,> - >
问题
动态布局(即代码生成的而已)是否可以使用
DataBinding?在
Presenter中,如何传入控件或变量(比如要改变可见性的TextView,要显示、消失的ProgressDialog)?如何给控件使用
DataBinding设置marginXXX属性?
3.1 使用@BindingAdapter("android:layout_marginTop")注解
3.2 方法的第一个参数:View view,第二个参数:float marginTop
3.3 注意:第二个参数类型一定得是float
DataBinding 笔记的更多相关文章
- [ExtJS5学习笔记]第十节 Extjs5新增特性之ViewModel和DataBinding
本文地址:http://blog.csdn.net/sushengmiyan/article/details/38612721 本文作者:sushengmiyan ------------------ ...
- 设计模式笔记之三:Android DataBinding库(MVVM设计模式)
本博客转自郭霖公众号:http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650236908&idx=1&sn=9e53 ...
- AngularJs学习笔记--directive
原版地址:http://code.angularjs.org/1.0.2/docs/guide/directive Directive是教HTML玩一些新把戏的途径.在DOM编译期间,directiv ...
- AngularJs学习笔记--concepts(概念)
原版地址:http://code.angularjs.org/1.0.2/docs/guide/concepts 继续.. 一.总括 本文主要是angular组件(components)的概览,并说明 ...
- [置顶]
Android AOP 实践笔记
本文同步自wing的地方酒馆 最近博客更新越来越慢了,有两方面原因: 1.没啥好写的. 2.应该沉下心好好沉淀自己,积累一些东西,博客写的太频繁有"刷博客"之嫌,还容易浮躁. 浮躁 ...
- AngularJs学习笔记--Understanding the Controller Component
原版地址:http://docs.angularjs.org/guide/dev_guide.mvc.understanding_model 在angular中,controller是一个javasc ...
- 【Android Jetpack高手日志】DataBinding 从入门到精通
前言 DataBinding 数据绑定库是 Android Jetpack 的一部分,借助该库可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源.我个人觉得,使用 DataBin ...
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
随机推荐
- 较详细的介绍JNI
JNI其实是Java Native Interface的简称,也就是java本地接口.它提供了若干的API实现了和Java和其他语言的通信(主要是C&C++).也许不少人觉得Java已经足够强 ...
- all-oone-data-structure(好)
哈哈,我用了HashMap, 双向链表,还有了HashSet来保存key的集合. 现在这道题目还只有 9.3%的AC率,难度为HardTotal Accepted: 9 Total Submissio ...
- python中常用的推导(字典推导和列表推导)
在python开发中经常需要书写这样的代码 result = list() for data in datas: if data not in ['a', 'b']: result.append(da ...
- 纯CSS实现文字一行居中,多行左对齐的方法
其实这种需求还是蛮常见的,主要用于产品列表页面,用于产品图片下面,显示产品的名称. 想要实现的效果为: 未知文字长度,当文字长度小于盒子宽度,也就是一行时,文字居中. 当文字长度大于盒子的宽度,会自动 ...
- [ES6] 10. Array Comprehensions
ES6 decided that Array Comprehensions will not included in this version, ES7 will include this. Ther ...
- java线程总结(4/5)
转自:http://blog.csdn.net/qiaqia609/article/details/8067356 整理的一些关于线程的面试题目: 46.java中有几种方法可以实现一个线程?用什么关 ...
- LVS-负载均衡
LVS: LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.章 ...
- Python代码可视化
把以下代码贴到这个网站: http://www.pythontutor.com l1 = [3, [66, 55, 44], (7, 8, 9)] l2 = list(l1) l1.append(10 ...
- FastDFS安装配置过程中出现错误提示"/home/yuqing/fastdfs" can't be accessed, error info: No such file or directory
解决: mkdir -p /home/yuqing/fastdfs 这回正常了,查看启动成功与否 [root@localhost FastDHT]# ps -ef |grep track |grep ...
- Linux 静态链接库和动态连接库
(0)文件夹 VMware 下安装Ubuntu的吐血经历 零基础学习Shell编程 Linux下的makefile的妙用 Linux调试神器 -- gdb 十分钟学会Python的基本类型 Linux ...