Android开发教程 - 使用Data Binding(五)数据绑定
本系列目录
- 使用Data Binding(一)介绍
- 使用Data Binding(二)集成与配置
- 使用Data Binding(三)在Activity中的使用
- 使用Data Binding(四)在Fragment中的使用
- 使用Data Binding(五)数据绑定
- 使用Data Binding(六)RecyclerView Adapter中的使用
- 使用Data Binding(七)使用BindingAdapter简化图片加载
- 使用Data Binding(八)使用自定义Interface
- 使用Data Binding Android Studio不能正常生成相关类/方法的解决办法
前面我们讲到了Data Binding在Activity中的使用和在Fragment中的使用,在两者的布局文件中,都可以绑定数据(对象),本篇文章我们就来介绍数据的绑定。
<data>标签
在这个标签中,我们通常用来做下面的事情:
- 定义所绑定的数据的名称(变量名)及对应类型
- 引入页面所需的类
示例如下:
<data> <import type="android.view.View" /> <import type="android.text.TextUtils" /> <variable name="visible" type="boolean"/> <variable name="title" type="String"/> <variable name="user" type="cn.examplecode.androiddatabinding.User"/> </data>
其中”<import/>”标签表示引入一个类,比如上例中引入了View类和一个工具类TextUtils,当然也可以引入你自己的类,比如常量类或者工具类。
下面”<variable/>”标签定义了本页面所需要的各种数据名称或类型,其类型可以是java中的基础类型,或者自定义的类。
设置数据
上面定义了页面中所需要的数据后,下面就需要通过获取到的Binding对象设置这些数据:
mBinding.setVisible(true); mBinding.setTitle("用户信息"); User user = new User(); user.setName("Steve Jobs"); mBinding.setUser(user);
这里的setXXX()方法也是IDE自动根据<data>标签中的定义自动生成的。
如果写代码过程中发现IDE并没有自动正确生成对应的setXXX()方法,则参考这篇文章:Android Data Binding没有正常生成相关类/方法的解决办法,仅需几步操作即可使IDE正常生成。
在布局中使用这些数据
数据设置完毕以后就可以在页面中使用这些数据了,使用起来也非常方便,比起在java代码中操作,可以省去不少代码。
<TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{title}" android:visibility="@{visible ? View.VISIBLE : View.GONE}" /> <TextView android:id="@+id/tv_username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.name}" />
请注意上面的代码:
android:text="@{title}"
这一行是设置变量”title”的值到TextView中。
android:visibility="@{visible ? View.VISIBLE : View.GONE}"
这一行是根据变量”visible”的值来控制该TextView的显示与否,注意这里需要在<data>标签中引入android.view.View类,来使用View中的VISIBLE和GONE常量,这里可以使用问号表达式来判断。
android:text="@{user.name}"
user是一个自定义对象,user.name意思是取user对象中的name的值。
User定义如下,注意必须设置getter/setter:
public class User { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
总结
通过本篇文章相信你已经了解如何将数据与View进行绑定,这是Data Binding的核心,也是MVVM架构模式的基础,这里介绍的是比较简单的绑定,后面我们将介绍更加深入的使用,使用这些技术后就会发现Data Binding的强大和高效率。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
流言终结者- Flutter和RN谁才是更好的跨端开发方案?
背景 论坛上很多小伙伴关心为什么闲鱼选择了Flutter而不选择其他跨端方案?站在质量的角度,高性能是一个很重的因素,我们使用Flutter重写了宝贝详情页之后,对比了Flutter和Native详情页的性能表现,结论是中高端机型上Flutter和Native不相上下,在低端机型上,Flutter会比Native更加的流畅,其实闲鱼团队在使用Flutter做详情页过程中,没有更多地关注性能优化,为了更快地上线,也是优先功能的实现,不过测试结果出来之后,却出乎意料地优于原先的Native的实现(具体的测试结果,属于敏感数据,要走披露流程,伤不起…) 但是这样很显然不能敷衍过去,仔细想了想,确实Flutter的定位并不是要替代Native,他只想做一个极致的跨端解决方案,所以还是要回到跨端解决方案的赛道,给您从性能角度比一比,谁才是更好的
- 下一篇
Android开发教程 - 使用Data Binding(六)RecyclerView Adapter中的使用
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fragment中的使用 使用Data Binding(五)数据绑定 使用Data Binding(六)RecyclerView Adapter中的使用 使用Data Binding(七)使用BindingAdapter简化图片加载 使用Data Binding(八)使用自定义Interface 使用Data Binding Android Studio不能正常生成相关类/方法的解决办法 前面我们讲到了Data Binding在Activity中的使用和在Fragment中的使用,除此之外,Data Binding也可以使用在RecyclerView/AdapterView的Adapter中,本文以RecyclerView为例。 获取Binding对象 按照通常的做法,我们在Adapter中会定义一个ViewHolder,在此ViewHolder中取得一些布局View的引用。 使用Data B...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7