DataBinding的使用
来源:互联网 发布:身份证正则表达式 java 编辑:程序博客网 时间:2024/04/29 01:37
什么是databinding?
Android 团队发布了一个数据绑定框架(Data Binding Library)。以后可以直接在 layout 布局 xml 文件中绑定数据了,无需再 findViewById 然后手工设置数据。
配置
dataBinding{ enabled = true }
MVVM
至于MVVM基本上和MVP一模一样,感觉只是名字替换了一下。他的关键技术就是今天的主题(Data Binding)。View的变化可以自动的反应在ViewModel,ViewModel的数据变化也会自动反应到View上。这样开发者就不用处理接收事件和View更新的工作,框架已经帮你做好了。
以下给出两篇学习文章
Android MVVM到底是啥?看完就明白了
完全掌握Android Data Binding
DataBinding用法代码下载
下面是使用过程中的一些总结:
首先定义了一个工具类
public class StringUtil { public static String capitalize(final String word) { if (word.length() > 1) { return String.valueOf(word.charAt(0)).toUpperCase() + word.substring(1); } return word; }}
接下来我们要动态绑定,设置TextView的文字,我们可能会这样写
<data> <variable name="user" type="com.example.databindingdemo.User"/> <variable name="StringUtil" type="com.example.databindingdemo.StringUtil" /> </data>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{StringUtil.capitalize(user.firstName)}" />
但是这样写是有问题的,当你运行程序的时候,会报出下面的错误
大概的意思就是在这个地方不能使用静态的方法,不知道是为什么,但是在使用String的静态方法的时候,却没有报错,比如以下方式
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{String.valueOf(num)}" />
具体原因现在还不知道
<variable name="list" type="java.util.ArrayList<String>"/>
这里不能写泛型,否则会报下面的错
接下来看看对boolean的操作
<variable name="error" type="boolean"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{error ? "error":"null"}" />
网上这样写是没问题的,但是我运行再自己的项目中,就报错了
设置点击事件报错
<variable name="click" type="com.example.databindingdemo.MainActivity"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{click.click}" />
然后我们在MainActivity里面
public void click(View view){ user.setFirstName("狗"); }
这时候报下面的错
设置List数据报错
<variable name="list" type="java.util.ArrayList"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{list[0]}" />
ArrayList<String> list = new ArrayList<>(); list.add("AA"); list.add("BB"); binding.setList(list);
Error:Execution failed for task ':databindingdemo:compileDebugJavaWithJavac'.> java.lang.RuntimeException: Found data binding errors.****/ data binding error ****msg:Cannot find the setter for attribute 'android:text' with parameter type E on android.widget.TextView.file:E:\workspace\financeApp\databindingdemo\src\main\res\layout\activity_main.xmlloc:45:28 - 45:34****\ data binding error ****
0 2
- DataBinding的使用
- DataBinding的简单使用
- 关于Databinding的使用
- DataBinding的初步使用
- DataBinding的使用
- DataBinding的高级使用
- DataBinding的简单使用
- DataBinding的基本使用
- 使用databinding遇到的问题
- DataBinding的基本使用(三)
- DataBinding的基本使用(五)
- Databinding中的BindingConversion的使用
- 从零开始的DataBinding使用笔记
- android DataBinding 的简单使用
- DataBinding使用
- DataBinding使用
- DataBinding 使用
- DataBinding中get,set方法的使用
- C++实验4—利用循环求和,1000内偶数和
- 实现淘宝商品页面,知乎小圆桌的滑块浮动切换页面的效果
- mysql动态游标学习(mysql存储过程游标)
- LoadRunner的安装与破解
- 什么是BOM头
- DataBinding的使用
- JAVA--模版方法模式(Template Method)--设计模式十四
- 点击控件动态创建新页面
- failed to get the task for process XXX(解决方案)
- 操作系统还原真相阅读笔记(一)——答疑解惑
- android View动画
- centos install pssh
- Comparable和Comparator的区别
- scala类型系统:12) view bounds