IT科技类资讯

元数据绑定系列(一):元数据绑定的使用

时间:2010-12-5 17:23:32  作者:数据库   来源:应用开发  查看:  评论:0
内容摘要:想了解更多内容,请访问:和华为官方合作共建的鸿蒙技术社区https://harmonyos.51cto.com阅读本文之前,建议您先阅读 Codelabs:元数据绑定框架,读实之后,跑一下代码。并且带

想了解更多内容,元数用请访问:

和华为官方合作共建的据绑鸿蒙技术社区

https://harmonyos.51cto.com

阅读本文之前,建议您先阅读 Codelabs:元数据绑定框架,定系的使读实之后,列元跑一下代码。数据并且带着下面几个问题阅读。绑定之后,元数用我们一起探讨这些问题:

元数据绑定的据绑使用步骤,注意事项。定系的使 什么是列元元数据绑定?和数据绑定有什么区别? 元数据绑定能干什么?

相关推荐:元数据绑定系列(二):元数据绑定进阶

元数据绑定的使用步骤,注意事项。数据

使用步骤我就不复制粘贴了,绑定说一下注意事项:

1.不要忘记注解开关

ohos {       compileOptions {           annotationEnabled true      }  } 

 2.不要忘记初始化

@MetaDataApplication(requireData = true,元数用 exportData = false)  public class MyApplication extends AbilityPackage {       @Override      public void onInitialize() {           super.onInitialize();          MetaDataFramework.init(this);      } } 

3.Feature中使用 元数据绑定,Json Schema文件必须放在Entry的据绑resource/rawfile.jsonschema路径下。

4.xml中引用元数据有两种方式,定系的使别搞混

 <request-meta-data> <request-meta-data     name="ClockMetaData"     schema="com.example.meta-data.alarm"/>   <using-meta-data>

detail、list_item之类的服务器租用页面里。待绑定的数据由上一个页面传进来

<using-meta-data     name="ClockMetaData"     schema="com.example.meta-data.alarm"/> 

5.Json Schema中的id与 xml布局文件中引用元数据 的schema字段相对应。

{     "id": "com.example.meta-data.alarm", //和xml中的schema对应,必须一样!   "title": "alarm schema",    "$schema": "http://json-schema.org/draft-04/schema#",    "description": "alarm description",      "type": "object",      "properties": {     }  } 

6.在xml中不访问metaData中的自定义方法时,可以不指定class;否则必须指定。

<request-meta-data     name="ClockMetaData"     class="com.huawei.metadatabindingdemo.alarm.metadata.ClockRowMetaData"/>  

7.java代码中配置元数据(和xml中是等价的)

配置RequestSource

<request-meta-data     name="ClockMetaData"     uri="dataability:///com.huawei.metadatabindingdemo.db.AlarmsDataAbility"/>  //java代码中的等价配置: MetaDataRequestInfo request = new MetaDataRequestInfo.Builder()         .setRequestSource("ClockMetaData",                 "dataability:///com.huawei.metadatabindingdemo.db.AlarmsDataAbility") 

配置MetaDataClass

<request-meta-data     name="ClockMetaData"     class="com.huawei.metadatabindingdemo.alarm.metadata.ClockRowMetaData"/>  //java代码中的等价配置: MetaDataRequestInfo request = new MetaDataRequestInfo.Builder()     .setMetaDataClass("ClockMetaData", ClockRowMetaData.class) 

8.待绑定元素必须要有id

9.待绑定字段命名空间要使用metaDataBinding

10.requestBinding()或reBinding()之后才可以调用binding.getLayoutComponent();

什么是元数据绑定?和数据绑定有什么区别?

百度百科中讲:“元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息”

元数据即“描述数据的亿华云数据”。那么,我理解的“元数据绑定”应该是通过“元数据”的形式来实现数据绑定。

和“数据绑定”对比

定义上:最大的区别就是绑定的对象不一样,前者绑定“元数据”,后者绑定ActiveData。 使用上:元数据绑定是扩展包引入,数据绑定是sdk内置 功能上:元数据绑定更强大一些。后者只有单向绑定、双向绑定的功能。 内部实现上:元数据绑定基于APT(Annotation Processing Tool)即注解处理器。数据绑定怎么实现的我也不知道,还请高人告知一二!

元数据绑定能干什么?

单向绑定@{ }

<Text     metaDataBinding:text="@{ ClockMetaData.message}"/> 

双向绑定@={ }

<TextField     metaDataBinding:text="@={ ClockMetaData.message}"/> 

绑定自定义函数*{ }

<TextField     metaDataBinding:text="*{ ClockMetaData.getTimeZone(@{ ClockMetaData.hour})}"/> 

绑定资源文件${ }

<TextField     metaDataBinding:image_src="${ Media_icon_switch_enabled}"/> 

点击事件触发给元数据赋值#{ }

<TextField     metaDataBinding:onClick="#{ ClockMetaData.enabled = (@{ ClockMetaData.enabled} == 1 ? 0 : 1)}"/> 

想了解更多内容,请访问:

和华为官方合作共建的源码库鸿蒙技术社区

https://harmonyos.51cto.com

copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap