博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mvvm架构使用解析
阅读量:5037 次
发布时间:2019-06-12

本文共 1815 字,大约阅读时间需要 6 分钟。

配置

android studio目前已经集成了dataBinding,只需在build.gradle中配置,如下:

android {    dataBinding {        enabled = true;    }}

布局文件

使用 Data Binding 之后,xml的布局文件就不再单纯地展示 UI 元素,还需要定义 UI 元素用到的变量。所以,它的根节点不再是一个 ViewGroup,而是变成了 layout,并且新增了一个节点 data

....

要实现 MVVM 的 ViewModel 就需要把数据与UI进行绑定,data 节点就为此提供了一个桥梁,我们先在 data 中声明一个 variable,这个变量会为 UI 元素提供数据(例如 TextView 的 android:text),然后在  代码中把”后台”数据与这个 variable 进行绑定。

数据对象

添加一个entity类,NewsEntity

public class NewsEntity extends BaseObservable {    private String name;    private String title;    @Bindable    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;        notifyPropertyChanged(BR.name);    }    @Bindable    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;        notifyPropertyChanged(BR.title);    }}

 

定义 Variable

再回到布局文件,在 data 节点中声明一个变量 news

        

绑定 Variable

修改 Activity 的 onCreate 方法,用 DatabindingUtil.setContentView() 来替换掉 setContentView(),然后创建一个 NewsEntity对象,通过 binding.setNews(news) 与 variable 进行绑定。

 

高级用法

使用类方法

首先为类添加一个静态方法

public class MyStringUtils {    public static String capitalize(final String word) { if (word.length() > 1) { return String.valueOf(word.charAt(0)).toUpperCase() + word.substring(1); } return word; } }

然后在 xml 的 data 节点中导入:

使用方法与 Java 语法一样:

类型别名

如果我们在 data 节点了导入了两个同名的类怎么办?

这样一来出现了两个 User 类,那 user 变量要用哪一个呢?不用担心,import 还有一个 alias 属性。

Null Coalescing 运算符

android:text="@{user.displayName ?? user.lastName}"

就等价于

android:text="@{user.displayName != null ? user.displayName : user.lastName}"

属性值

通过 ${} 可以直接把 Java 中定义的属性值赋值给 xml 属性。

使用资源数据

转载于:https://www.cnblogs.com/huozhong/p/6114584.html

你可能感兴趣的文章
Linux下MySQL数据库安装与配置
查看>>
Extjs String转Json
查看>>
oracle入门(4)——少而常用的命令
查看>>
打印机设置(PrintDialog)、页面设置(PageSetupDialog) 及 RDLC报表如何选择指定打印机...
查看>>
Java 虚拟机部分面试题
查看>>
二叉树的遍历问题总结
查看>>
Spring之面向切面编程AOP
查看>>
MATLAB GUI程序设计中使文本框接收多行输入的方法
查看>>
全文检索-Elasticsearch (四) elasticsearch.net 客户端
查看>>
Oracle DBMS_SESSION
查看>>
sublime复制当前行到下一行
查看>>
WPF 3D变换应用
查看>>
ArchLinux安装开源VMware Tools
查看>>
DB2 锁升级示例1
查看>>
16.RDD实战
查看>>
MainFrame知识小结(20120210)—dfsort/syncsort中的数据类型
查看>>
D - Flip tile
查看>>
Java连接RabbitMQ之创建连接
查看>>
开户vim编程之--cscope支持
查看>>
python数据类型图解
查看>>