新聞中心
想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.
閱讀本文之前,建議您先閱讀 Codelabs:元數(shù)據(jù)綁定框架,讀實(shí)之后,跑一下代碼。并且?guī)е旅鎺讉€(gè)問(wèn)題閱讀。之后,我們一起探討這些問(wèn)題:
- 元數(shù)據(jù)綁定的使用步驟,注意事項(xiàng)。
- 什么是元數(shù)據(jù)綁定?和數(shù)據(jù)綁定有什么區(qū)別?
- 元數(shù)據(jù)綁定能干什么?
相關(guān)推薦:元數(shù)據(jù)綁定系列(二):元數(shù)據(jù)綁定進(jìn)階
元數(shù)據(jù)綁定的使用步驟,注意事項(xiàng)。
使用步驟我就不復(fù)制粘貼了,說(shuō)一下注意事項(xiàng):
1.不要忘記注解開(kāi)關(guān)
- 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中使用 元數(shù)據(jù)綁定,Json Schema文件必須放在Entry的resource/rawfile.jsonschema路徑下。
4.xml中引用元數(shù)據(jù)有兩種方式,別搞混
- name="ClockMetaData"
- schema="com.example.meta-data.alarm"/>
detail、list_item之類的頁(yè)面里。待綁定的數(shù)據(jù)由上一個(gè)頁(yè)面?zhèn)鬟M(jìn)來(lái)
- name="ClockMetaData"
- schema="com.example.meta-data.alarm"/>
5.Json Schema中的id與 xml布局文件中引用元數(shù)據(jù) 的schema字段相對(duì)應(yīng)。
- {
- "id": "com.example.meta-data.alarm", //和xml中的schema對(duì)應(yīng),必須一樣!
- "title": "alarm schema",
- "$schema": "http://json-schema.org/draft-04/schema#",
- "description": "alarm description",
- "type": "object",
- "properties": {
- }
- }
6.在xml中不訪問(wèn)metaData中的自定義方法時(shí),可以不指定class;否則必須指定。
- name="ClockMetaData"
- class="com.huawei.metadatabindingdemo.alarm.metadata.ClockRowMetaData"/>
7.java代碼中配置元數(shù)據(jù)(和xml中是等價(jià)的)
配置RequestSource
- name="ClockMetaData"
- uri="dataability:///com.huawei.metadatabindingdemo.db.AlarmsDataAbility"/>
- //java代碼中的等價(jià)配置:
- MetaDataRequestInfo request = new MetaDataRequestInfo.Builder()
- .setRequestSource("ClockMetaData",
- "dataability:///com.huawei.metadatabindingdemo.db.AlarmsDataAbility")
配置MetaDataClass
- name="ClockMetaData"
- class="com.huawei.metadatabindingdemo.alarm.metadata.ClockRowMetaData"/>
- //java代碼中的等價(jià)配置:
- MetaDataRequestInfo request = new MetaDataRequestInfo.Builder()
- .setMetaDataClass("ClockMetaData", ClockRowMetaData.class)
8.待綁定元素必須要有id
9.待綁定字段命名空間要使用metaDataBinding
10.requestBinding()或reBinding()之后才可以調(diào)用binding.getLayoutComponent();
什么是元數(shù)據(jù)綁定?和數(shù)據(jù)綁定有什么區(qū)別?
百度百科中講:“元數(shù)據(jù)(Metadata),又稱中介數(shù)據(jù)、中繼數(shù)據(jù),為描述數(shù)據(jù)的數(shù)據(jù)(data about data),主要是描述數(shù)據(jù)屬性(property)的信息”
元數(shù)據(jù)即“描述數(shù)據(jù)的數(shù)據(jù)”。那么,我理解的“元數(shù)據(jù)綁定”應(yīng)該是通過(guò)“元數(shù)據(jù)”的形式來(lái)實(shí)現(xiàn)數(shù)據(jù)綁定。
和“數(shù)據(jù)綁定”對(duì)比
- 定義上:最大的區(qū)別就是綁定的對(duì)象不一樣,前者綁定“元數(shù)據(jù)”,后者綁定ActiveData。
- 使用上:元數(shù)據(jù)綁定是擴(kuò)展包引入,數(shù)據(jù)綁定是sdk內(nèi)置
- 功能上:元數(shù)據(jù)綁定更強(qiáng)大一些。后者只有單向綁定、雙向綁定的功能。
- 內(nèi)部實(shí)現(xiàn)上:元數(shù)據(jù)綁定基于APT(Annotation Processing Tool)即注解處理器。數(shù)據(jù)綁定怎么實(shí)現(xiàn)的我也不知道,還請(qǐng)高人告知一二!
元數(shù)據(jù)綁定能干什么?
單向綁定@{}
- metaDataBinding:text="@{ClockMetaData.message}"/>
雙向綁定@={}
- metaDataBinding:text="@={ClockMetaData.message}"/>
綁定自定義函數(shù)*{}
- metaDataBinding:text="*{ClockMetaData.getTimeZone(@{ClockMetaData.hour})}"/>
綁定資源文件${}
- metaDataBinding:image_src="${Media_icon_switch_enabled}"/>
點(diǎn)擊事件觸發(fā)給元數(shù)據(jù)賦值#{}
- metaDataBinding:onClick="#{ClockMetaData.enabled = (@{ClockMetaData.enabled} == 1 ? 0 : 1)}"/>
想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):
和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.
本文題目:元數(shù)據(jù)綁定系列(一):元數(shù)據(jù)綁定的使用
文章出自:http://m.fisionsoft.com.cn/article/cocoiop.html


咨詢
建站咨詢
