一起Talk Android吧(第三百八十五回:数据绑定-DataBinding总结)

news/2024/5/2 14:13:57/文章来源:https://blog.csdn.net/talk_8/article/details/127003231

文章目录

  • 数据绑定使用方法
    • 7.单向数据绑
    • 8.双向数据绑定
    • 9.绑定事件
  • 演示结果
  • 使用总结

各位看官们,大家好,上一回中咱们说的是数据绑定-DataBinding的例子,这一回中咱们继承介绍该例子。闲话休提,言归正转,让我们一起Talk Android吧!

数据绑定使用方法

7.单向数据绑

单向数据绑定表示数据模型中的数据发生变化时与该数据绑定的UI控件自动更新控件中显示的数据。

这个功能需要数据模型类继承BaseObservable类,并且在数据模型类的公有属性上使用@Bindable注解,如果属性是私有权限,那么把注解写到属性的getter方法上;最后是在属性的setter方法中使用notifyChange()方法或者notifyPropertyChanged(BR.strValue)方法通知视图:与视图绑定的数据发生了变化,请修改视图中显示的数据;

这两个方法中不带参数的方法用来通知视图中与数据绑定的所有控件,带参数的方法用来通知视图中与参数匹配的控件,这个参数使用了一个断BR的类,它是系统自动生成的,它的成员包含数据绑定类的属性和视图中的数据变量,我们在示例代码中使用BR.strValue当作参数,它是数据绑定类的属性,绑定了视图中的TextView控件,当它的数据发生变化后,视图中TextView显示的内容会自动更新,这就是数据绑定的魅力所在。关于BR类的示例如下,大家可以参考:

//这个类是系统编译生成的,不需要手动去修改
public class BR {public static final int _all = 0;public static final int strValue = 1;public static final int testdata = 2;
}

8.双向数据绑定

双向数据绑定表示视图中的UI控件发生变化时自动通知与当前控件绑定的数据,并且更新数据,反之亦然。

双向数据绑定是在单向数据绑定的基础上实现的,在视图中UI控件绑定数据的地方添加等号就可以:android:text="@={testdata.strValue}",大家可以参考步骤4中的代码,我们给EditText控件实现了双向数据绑定功能,当数据模型中的数据更新时EditText会自动更新显示的内容,当EditText控件更新时(用户在EditText中输入数据)数据模型中的数据会自动更新。

9.绑定事件

在官方文档中叫绑定表达式,就是给视图中的UI控件绑定一个事件监听器,常用的是onClick,比如我们在步骤4中的代码里给Buttton绑定了事件

android:onClick="@{()->testdata.buttonClicked()}"

当该Button被点击时会自动调用数据模型类中的buttonClicked()方法,该方法的实现如下:

    public void buttonClicked() {strValue += strValue;setStrValue(strValue);}

我们主动调用了属性的setter方法,这样启动单向数据绑定功能通知与属性绑定的UI控件更新控件中的数据。

演示结果

下面的动画是本程序的演示,程序界面一共三个控件(也可以从xml布局文件中看到):

  • 用来显示数据的TextView
  • 用来接收数据的EditText
  • 用来绑定事件的Button.
    在这里插入图片描述

我们创建数据模型对象时初始化方法中的数值是"hello",这个值用来初始化类中的属性,因为类中的属性单向绑定到TextView控件,所以TextView显示"hello",当按下Button时,修改属性的值,属性值发生变化后自动通知TextView更新数据,这个在动画中可以看到,进而验证了单向数据绑定功能正常。

EditText使用了双向数据绑定功能,它的初始值是数据模型类的属性值"hello",按下Button后属性值发生变化,受双向绑定功能的影响,它显示的数据也自动进行更新,当我们在控件上输入"good"后导致控件发生了更新,受双向绑定功能的影响,数据模型中的数据会自动更新,更新后的值通过TextView显示出来。

使用总结

  • 数据绑定可以在Activity中使用,也可以在Fragment中使用;
  • 在绑定过程中还支持各种运算和运算符,大家可以参考官方文档的介绍;
  • 数据绑定具有视图绑定的功能,在此功能上还可以自动更新数据和UI控件,而且还可以给控件绑定事件监听器;

数据绑定主要包含三个要素:Activity,xml布局(视图),数据模型类.

数据封装在数据模型中,视图中的控件和数据模型中的数据做了绑定,Activity只需要把视图和数据模型类关联起来就可以,这就典型的MVVM模型,数据绑定在其中担当VM角色。

使用数据绑定主要有两个优势:

  • 控件和数据可以自动更新
  • view和model可以分开降低了程序的耦合

关于数据绑定的用法还比较多,我们在这里只介绍了一些常用的功能,感兴趣的看官可以去看官方文档。此外,我觉得在Compose推出后数据绑定功能已经无用武之地,因为没有View用来绑定数据。

看官们,关于Android中数据绑定-DataBinding的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_12913.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线程池概念2

线程池类图 ExecutorService:是一个线程池最基本的接口,提供了提交任务,关闭线程池这些基本的方法。 ScheduledExecutorService:扩展接口,在基础线程池的功能上又新增了任务调度的功能,可以用来定时执行任务。 线程池状态 线程…

Devtools Console 面板输入了 1+1 ,浏览器内部发生了什么?

背景 新来的实习生妹子问了一个问题:「你看 Chrome 的 Devtools 调试工具,代码写一半还没运行下面就会提示输出结果,这个咋做到的?」 咋做的?对于 Devtools 的内部执行逻辑,咱不了解,但咱也不能…

WhatsApp和WhatsApp Business之间的区别

关键词:WhatsApp、WhatsApp Business WhatsApp 无疑是一款超级方便、免费且毫不费力的即时通讯应用程序。这就是庞大的用户群的原因。对于企业来说,它也是一个超级方便、免费且不费吹灰之力的即时通讯应用程序。特别是自从 WhatsApp 推出了 WhatsApp Bus…

《MySQL DBA封神打怪之路》专栏学习大纲

《MySQL DBA封神打怪之路》专栏学习大纲 文章目录《MySQL DBA封神打怪之路》专栏学习大纲1、作者介绍2、专栏介绍3、专栏部分文章截图3.1.所有文章一栏3.2.文章内容截图4、专栏大纲学习指南4.1对数据库的初步认识4.2.四种类型的SQL语句基本使用4.3.超丰富的多表联查案例4.4.事物…

消除笔去水印怎么做?教你怎么用这些消除笔软件

在网上看到好看的照片想要用作壁纸,但是上面有水印看起来不好看怎么办?我们可以用有消除笔的软件将图片水印去除,那么消除笔去水印怎么做呢?今天的这个教程分享给你们。方法一:借助“Styler”进行去水印操作 这是一款拥…

Echarts绘制geo地图属性设置大全(一)

1、Echarts版本 "echarts": "^5.3.3", 2、基础地图绘制&#xff08;以中国地图为例&#xff09; 绘制地图需要有用于绘制地理坐标系的数据&#xff0c;如示例使用的china.js <template><div ref"mapBar" class"map-class"&…

面试之HashMap

1.初始大小&#xff1a;HashMap默认初始大小是16&#xff0c;这个默认值是可以设置的&#xff0c;如果事先知道大概的数据量有多大&#xff0c;可以通过修改默认初始大小&#xff0c;减少动态扩容的次数&#xff0c;这样会大大提高HashMap的性能 2.动态扩容&#xff1a;最大 装…

兼容性测试包含哪几类呢?

兼容性测试包含哪几类呢? (1)浏览器方面 关于浏览器的兼容性测试&#xff0c;主要是检查页面的交互、元素和样式展示是否正常。我们都知道&#xff0c;目前市面上主流的浏览器非常多&#xff0c;像&#xff1a;360、搜狗、火狐等等。 在进行测试的时候&#xff0c;由于兼容性问…

2022出海东南亚:越南电商市场现状及网红营销特点

近几年&#xff0c;东南亚整体发展态势非常好&#xff0c;加上国内市场饱和&#xff0c;不少国内企业在计划出海或已经出海东南亚。作为东南亚第二大电商市场&#xff0c;越南自然也成了香饽饽&#xff0c;越南蓬勃发展的数字经济和电商领域&#xff0c;让其成为了卖家挖掘新商…

Vue 力导图d3js 实现

PowerBI 自定义组件推荐用D3JS 实现&#xff0c;实现一个PowerBI 的力导图组件&#xff0c;为调试方便&#xff0c;先用Vue 实现一个&#xff0c;然后再移植到PowerBI 中&#xff0c;话不多说&#xff0c;上效果&#xff1a; 体验入口 上代码是最好的老师&#xff1a; <t…

【easyExcel】后端将模板文件写入流供前端下载报错,easyexcel下载模板文件出错

目录事件起因环境和工具操作过程解决办法参考内容&#xff1a;结束语事件起因 报错内容&#xff08;我主要搜索的两个错误内容点&#xff09;&#xff1a; com.alibaba.excel.exception.ExcelGenerateException: Create workbook failure 和 Caused by: org.apache.poi.openx…

kingbaseES(人大金仓)数据库语法和常用函数 以及 踩坑记录

前言 最近公司弄了个新项目&#xff0c;数据库指定使用kingbase数据库 刚开始一看这名字都不知道这是啥数据库&#xff0c;后来百度一搜&#xff0c;看到中文名字就知道了。 虽然没用过&#xff0c;但那几个国产数据库也听说过 这不&#xff0c;刚开始用&#xff0c;语法都不熟…

概率统计·概率论的基本概念【条件概率】

条件概率 定义 条件概率与积事件的区别 条件概率——在A事件发生的前提下&#xff0c;发生B 积事件——AB同时发生 性质 **注意&#xff08;3&#xff09;要在B1&#xff0c;B2……是互斥事件 &#xff08;6&#xff09;用得多 纯乐&#xff0c;自己都说了&#xff08;6&…

数智赋能,美创助力绍兴市上虞区建设医共体管理平台

什么是医共体&#xff1f; 开展县域医共体建设是深化医改的重要步骤和制度创新&#xff0c;旨在通过医共体模式&#xff0c;推动医疗卫生服务供给侧结构性改革&#xff0c;调整优化医疗资源结构布局&#xff0c;促进医疗卫生工作重心下移和资源下沉&#xff0c;提升基层服务能力…

瑞吉外卖(14) - 上传文件功能开发

文章目录文件上传介绍文件上传代码实现查看效果新建CommonController类断点测试转存文件取消拦截器过滤LoginCheckFilter.java运行测试完善功能编写application.xml编写CommonController.java运行测试完善二级目录编写application.yml编写CommonControler.java测试成功文件上传…

使用streamstring实现格式化输入

目的&#xff1a;在windows系统写c项目&#xff0c;常用sscanf_s进行格式化输入。但是在ubuntu系统上发现sscanf_s不可用&#xff08;只有sscanf可用&#xff0c;但是它是c 99 的函数了&#xff09;。后面查阅知道&#xff0c;这个sscanf_s函数是微软专有的函数&#xff0c;不具…

linux 竞态与并发编程

前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文就介绍了机器学习的基础内容。 提示&#xff1a;以下是本篇文…

Mapper代理开发

Mapper代理开发一. Mapper代理开发概述二. 使用Mapper代理要求(重点中的重点)三. 实操的代码main目录下的java目录中1. UserMapper接口2. User类3. MybatisDemo类main目录下的resources目录中1. UserMapper.xml2. logback.xml3. mybatis.xml一. Mapper代理开发概述 之前我们写的…

【SpringBoot2】02-SpringBoot中如何修改依赖的版本

Spring Boot 中修改依赖版本 如果默认版本号不合适&#xff0c;我们可以修改版本号。 首先&#xff0c;打开当前项目的 pom.xml 文件&#xff0c;查看 spring-boot-dependencies-2.7.4.pom 中规定当前依赖的版本。 例如&#xff0c;我想修改 MySQL 驱动版本&#xff0c;我先看…

OPSS-PEG-Acrylate,OPSS-PEG-AC,巯基吡啶-聚乙二醇-丙烯酸酯试剂供应

英文&#xff1a;OPSS-PEG-Acrylate&#xff0c;OPSS-PEG-AC 中文&#xff1a;巯基吡啶-聚乙二醇-丙烯酸酯 2、 CAS number&#xff1b; N/A 3、The category&#xff1b;Acrylate/Acrylamide PEG Orthopyridyl disulfide (OPSS) PEG 4、Molecular weight&#xff1a;巯基吡…