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). 原文地址
目录
相关文章
|
Java 数据库 Android开发
Android异步之旅:探索AsyncTask
Android异步之旅:探索AsyncTask
287 0
|
Web App开发 移动开发 JavaScript
使用Aliplayer在微信中播放视频的正确姿势
沐钦分享下利用aliplayer在微信中播放视频的操作方式和效果
17304 0
|
6月前
|
存储 druid BI
从 ClickHouse、Druid、Kylin 到 Doris:网易云音乐 PB 级实时分析平台降本增效
基于 Apache Doris 替换了早期架构中 Kylin、Druid、Clickhouse、Elasticsearch、HBase 等引擎,统一了实时分析架构,并广泛应用于广告系统、日志平台和会员报表分析等典型场景,导入性能提升 3~30 倍,机器成本整体降低 55%、部分场景下高达 85%,每年节省数百万成本,综合效能提升 3~7 倍等显著收益,本文将详尽介绍基于 Doris 架构升级及在这些场景中的应用实践。
605 0
从 ClickHouse、Druid、Kylin 到 Doris:网易云音乐 PB 级实时分析平台降本增效
|
7月前
|
API 开发者 Python
「零基础」淘宝商品API调用指南:3步获取商品标题/价格/库存
注册淘宝开放平台账号,申请商品详情API权限并获取AppKey与AppSecret。通过RESTful接口,设置商品ID、返回字段等参数,使用Python发起HTTP请求,轻松获取商品标题、价格、库存等信息。
|
9月前
|
JavaScript 调度
BOM如何编制与管理?
BOM英文全称 Bill of Material,即“物料清单”,也称产品结构表。在制造业管理信息系统中,经常会提到BOM。物料清单是指产品所需零部件明细表及其结构。在ERP系统中,“物料”一词有着广泛的含义,它是所有产品、半成品、在制品、原材料、配套件、协作件、易耗品等与生产有关的物料的统称。
|
10月前
|
JSON API 数据库
产品详情查询API接口
产品详情查询API是现代电商与软件开发中的关键工具,基于RESTful架构,通过HTTP协议获取产品信息如名称、价格、库存等。本文详解其概念、原理、实现方法与应用示例,助力开发者快速掌握。
353 0
|
分布式计算 关系型数据库 数据处理
OceanBase 在金融行业的应用案例
【8月更文第31天】随着金融行业的快速发展,数据量的急剧增长和对数据处理能力的需求日益增加,传统的数据库解决方案已经难以满足现代金融机构对于高性能、高可用性和大规模扩展性的需求。在这种背景下,分布式数据库应运而生,其中OceanBase作为一款由阿里巴巴自主研发的分布式关系型数据库,在金融行业得到了广泛的应用。
921 0
|
人工智能 安全 物联网
《鸿蒙系统中人工智能驱动的智能助手:应用模式与未来航向》
在数字化时代,人工智能与操作系统的融合成为科技变革的核心力量。鸿蒙系统作为华为自主研发的分布式操作系统,为智能助手提供了广阔舞台。通过语音交互、多模态融合、场景感知与跨设备协同,智能助手实现了便捷操控、深度交互和主动服务。未来,借助大模型赋能、物联网深度融合及强化隐私保护,智能助手将推动全场景服务创新,助力开发者生态繁荣,开启万物互联的智能交互新时代。
1004 12
|
XML Java Apache
Spring中的BeanUtils.copyProperties
`BeanUtils.copyProperties()` 是 Spring 框架提供的工具方法,用于将一个 JavaBean 对象的属性值复制到另一个 JavaBean 对象中。主要功能包括属性拷贝、简化代码、类型转换等。该方法基于反射实现,支持属性名匹配和赋值,但仅执行浅拷贝,不支持深拷贝。使用时需注意属性名称和类型匹配,以及处理 null 值等问题。
1908 0
Spring中的BeanUtils.copyProperties
|
PyTorch 测试技术 算法框架/工具
Python中Thop库的常见用法和代码示例
肆十二在B站分享了关于THOP(Torch-OpCounter)的实战教学视频。THOP是一个用于计算PyTorch模型操作数和计算量的工具,帮助开发者评估模型复杂度和性能。本文介绍了THOP的安装、使用方法及基本用例,包括如何计算模型的FLOPs和参数量。
2133 0

热门文章

最新文章