Android DataBinding之布局include 和 viewStub详解与使用(六)
admin
2024-03-27 19:24:17
0次

一、介绍

        前面几章节,我们已系统的学习了布局和数据的绑定,都是涉及到布局和数据的更细部分,这个章节我们依旧介绍一个使用频率很多的两个布局include 和viewStub

二、使用介绍

1、include

                布局导入,在我们开发过程中经常遇到,将一个公共组件view抽取成一个布局,然后用的使用include进来。这样方便我们大家协同开发。如果我们通过databind来管理,这样就很官方。只要我们将数据模块给到include的layout,这样我们就可以不用管理布局里面的,只需要单独处理好数据即可。

1.1、根布局


include子布局:



布局数据交互:

如果在子布局data节点下定义了variable数据类型,那么这个数据就是根布局include的扩展字段

子布局:

              name="name"
            type="ObservableField<String>" />

根布局:bind:name="@{name}"

        数据格式要对应。这样数据就可以绑定关联起来,支持数据单向和双向绑定,在绑定数据的时候,只需要设置好根布局的data数据即可。

2、ViewStub

        ViewStub在大型负责的布局业务开发过程中也常常被用到,即用到再加载,这样可以提升设备性能。减少不需要的内存开销

在Data Binding中,同样也支持ViewStub的绑定

根布局:


待加载布局:



如何加载布局?

var inflatView: View? = null
if (!bind.viewsub.isInflated) {inflatView = bind.viewsub.viewStub?.inflate()!!
}

数据绑定:

        viewstub的数据绑定也是分为两个方法:

1.在布局中直接绑定

也是通过扩展字段映射过去,

  

        这里有个问题,如果的根数据是ObservableField,我们正常是需要在待加载数据也设置成ObservableField,但是,在Impl数据转换的时候,数据被进行了转换,

 

        所以你的在待加载布局中不要单独通过ObservableField接收数据。如果你不会,处理不好,可以通过一个对象来更新。或者用下面第二种方法来处理

2、代码中绑定

我们先把待加载的布局bind出来

var subData = DataBindingUtil.bind(inflatView!!)

ViewSubData:是待加载布局data class。

inflatView:viewStub.inflate的 root

注意:待加载布局还是include的布局,都可以设置class名称,不会影响根布局class的设置

数据绑定:

1.setVariable

subData?.setVariable(BR.user, text)

2.直接设置数据

var name = ObservableField()
subData?.user=name

解释:

        如果你通过代码去设置data,是支持ObservableField的类型,但是在xml布局中,就会被处理转换了。切记,如果你想单向绑定,可以通过代码来设置

setVariable介绍:

        setVariable申请的变量也会在BR中生成对标的flag字段。这个字段和Bindable是一样的,所以你也可以通过设置setVariable,指向申明的字段和对应的数据绑定也是可以的。

三、总结

这样我们就完成了include和ViewStub的介绍与使用,但是ViewStub在数据绑定的时候特别要小心,如果你排查不好xml ViewStub数据绑定,就通过代码去控制

加载完待加载的ViewStub,然后通过代码直接赋值。        

子布局和待加载的布局data都是可以有自己的class name。设置后不会影响根布局的data class的设置。

相关内容

热门资讯

AI做攻略、“双向奔赴”……国... 本文转自:人民网人民网记者 许维娜今年国庆假期,AI(人工智能)成了不少年轻人的“旅行搭子”。行前做...
合肥的这个“梗”, 翻篇了 社交平台的评论区,曾长期流传一句专属于合肥的黑色幽默。有人问合肥哪里好玩,本地网友半开玩笑地回复:合...
7万+旅游中高层都在的群,今天... 做旅游这行,资源卡位、渠道互通、项目落地——往往就差一个“对的机会”。我们的行业社群已聚集70,00...
一场帐篷音乐节,如何让井研从“... 帐篷音乐节现场封面新闻记者 周洪攀10月的研溪湿地,晚风里裹着柑橘的清甜与民谣的回响。夜幕降临,10...
白鹤翩翩落星愿,上海迪士尼度假... 10月9日,世界候鸟日前夕,上海迪士尼度假区星愿公园的湖风里多了一分白鹤的灵动。三座白鹤雕塑正式揭幕...
成都锦江边赏初秋枫叶飘飘 目前,成都锦江边国华街枫叶树红了。近年来,国华街附近的几条街都栽种了红枫树,是城区较集中看枫叶的点位...
GBTA:商务旅行正在复苏,但... 亚太正在成为全球商务旅行增长的重要引擎。在经历疫情后的快速反弹之后,全球商务旅行正在进入一个新的增长...
从景区焕新到节赛引流 邹城双节... 齐鲁网·闪电新闻10月9日讯 中秋、国庆“双节”假期,邹城市文化和旅游局提前谋划、周密部署,立足自身...
江山如此多娇 且看石楼今朝 金秋十月,黄河岸畔秋意盎然,丰收盛会喜迎国庆。本次石楼国庆文旅活动以“江山如此多娇,且看石楼今朝”为...
海南国庆假期接待游客475.4... 2026年国庆假期,海南接待游客475.40万人次,较2025年增长13.1%,较2024年增长15...