Architecture -- Data Binding Library

简介: 1). 简介Data Binding Library是一个支持库,允许在布局文件中绑定数据源。最小支持API为14,gradle插件最小为1.5.0。示例2).
1). 简介

Data Binding Library是一个支持库,允许在布局文件中绑定数据源。最小支持API为14,gradle插件最小为1.5.0。
示例

2). 配置
  • app/build.gradle
android {
    ...
    dataBinding {
        enabled = true
    }
}
3). 布局绑定表达式
<?xml version="1.0" encoding="utf-8"?>
<!--使用DataBinding时最外层包裹的内容-->
<layout xmlns:android="http://schemas.android.com/apk/res/android">
  <!--数据节点-->
  <data>
    <!--变量-->
    <variable
        name="user"
        type="com.mazaiting.jetpack.architecture.bean.User"/>
    <variable
        name="presenter"
        type="com.mazaiting.jetpack.architecture.expression.ExpressionPresenter"/>
  </data>

  <LinearLayout
      android:orientation="vertical"
      android:layout_width="match_parent"
      android:layout_height="match_parent">
    <TextView
        android:text="@{user.firstName}"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView
        android:text="@{user.lastName}"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView
        android:text="@{String.valueOf(user.index + 1)}"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView
        android:text="@{user.display ?? user.lastName}"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Button
        android:text="监听"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="@{(view) -> presenter.show(view, user) }"
        />
    <Button
        android:text="引用"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="@{ presenter::onClickShow }"
        />
    <Button
        android:text="修改FirstName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onChangeFirstName"
        />
  </LinearLayout>

</layout>
4). Observable UI
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
  <data>
    <!--<variable-->
        <!--name="user"-->
        <!--type="com.mazaiting.jetpack.architecture.bean.ObservableUser"/>-->
    <variable
        name="user"
        type="com.mazaiting.jetpack.architecture.bean.BaseObservableUser"/>
  </data>
  <LinearLayout
      android:orientation="vertical"
      android:layout_width="match_parent"
      android:layout_height="wrap_content">
    <TextView
        android:text="@{ user.firstName }"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <TextView
        android:text="@{ user.lastName }"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <TextView
        android:text="@{ String.valueOf(user.age)}"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:text="修改FirstName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="onChangeFirstName"
        />
  </LinearLayout>
</layout>
5). 效果演示
img_75d080135951f2b9b791b44a25f6080f.gif
效果.gif

img_8a9d041039891608727047980cb89f10.png
打印结果.png
6). 代码下载
7). 原文地址
目录
相关文章
|
Web App开发 移动开发 JavaScript
使用Aliplayer在微信中播放视频的正确姿势
沐钦分享下利用aliplayer在微信中播放视频的操作方式和效果
17096 0
|
8月前
|
人工智能 安全 物联网
《鸿蒙系统中人工智能驱动的智能助手:应用模式与未来航向》
在数字化时代,人工智能与操作系统的融合成为科技变革的核心力量。鸿蒙系统作为华为自主研发的分布式操作系统,为智能助手提供了广阔舞台。通过语音交互、多模态融合、场景感知与跨设备协同,智能助手实现了便捷操控、深度交互和主动服务。未来,借助大模型赋能、物联网深度融合及强化隐私保护,智能助手将推动全场景服务创新,助力开发者生态繁荣,开启万物互联的智能交互新时代。
762 12
|
10月前
|
存储 人工智能 安全
对话|无影如何助力企业构建办公安全防护体系
阿里云无影助力企业构建办公安全防护体系
|
12月前
|
XML Java Apache
Spring中的BeanUtils.copyProperties
`BeanUtils.copyProperties()` 是 Spring 框架提供的工具方法,用于将一个 JavaBean 对象的属性值复制到另一个 JavaBean 对象中。主要功能包括属性拷贝、简化代码、类型转换等。该方法基于反射实现,支持属性名匹配和赋值,但仅执行浅拷贝,不支持深拷贝。使用时需注意属性名称和类型匹配,以及处理 null 值等问题。
1256 0
Spring中的BeanUtils.copyProperties
|
11月前
|
监控 供应链 搜索推荐
不同行业DTC业务模型的差异化分析
DTC营销模式通过直接面向消费者,整合产业链、打造极致单品、培养超级用户等策略,实现利润快速增长。本文深入探讨DTC的定义、特点、优势、适用场景及实施策略,强调数据驱动和品牌与消费者紧密连接的重要性。
517 14
|
PyTorch 测试技术 算法框架/工具
Python中Thop库的常见用法和代码示例
肆十二在B站分享了关于THOP(Torch-OpCounter)的实战教学视频。THOP是一个用于计算PyTorch模型操作数和计算量的工具,帮助开发者评估模型复杂度和性能。本文介绍了THOP的安装、使用方法及基本用例,包括如何计算模型的FLOPs和参数量。
1143 0
|
Serverless 语音技术 开发工具
函数计算操作报错合集之怎么何集成nls tts python sdk
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
216 2
|
12月前
|
存储 运维 算法
服务器数据恢复—raid6阵列硬盘重组raid5阵列如何恢复raid6阵列数据?
服务器存储数据恢复环境: 存储中有一组由12块硬盘组建的RAID6阵列,上层linux操作系统+EXT3文件系统,该存储划分3个LUN。 服务器存储故障&分析: 存储中RAID6阵列不可用。为了抢救数据,运维人员使用原始RAID中的部分硬盘重新组建RAID并进行了初始化。 初始化开始一段时间后,运维人员察觉到情况有异后强制终止初始化,这个时候初始化已经完成一半以上。数据部分已被不可逆的破坏。
|
人工智能
如何利用ai快速写汇报、方案、总结。
本文介绍了一套与AI有效沟通的方法,以生成符合需求的文章。通过构建【角色+背景+任务+要求】的提示词框架,并辅以调试优化,可显著提升AI输出内容的质量。角色设定应包括单位、身份与能力;背景描述需涵盖宏观、微观及受众层面;任务需界定清晰,并可细分为文本输出或立意构思;要求则涉及语言风格、字数限制及内容结构。通过不断调试,最终产出满足期望的文章。
1058 6
|
缓存 网络协议 Linux
扩展Linux网络栈
扩展Linux网络栈
323 3