HarmonyOS 创建ArkTS卡片?

我的App需要实现卡片列表,然后点击列表卡片中的按钮刷新列表,列表的数据是从数据库查询的。

我参考的文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-ui-widget-creation-V5

看你们官方的Demo都是单个字符串展示,如何加载列表呢?

  • 是在组件中查找数据库?
  • 还是在FormExtensionAbility的onAddForm方法中查找数据库,通过createFormBindingData方法传入数据?
阅读 531
1 个回答

可以在onFormEvent方法中查数据库,获得数据传给createFormBindingData。

请参考如下代码

onFormEvent(formId: string, message: string) {
    // Called when a specified message event defined by the form provider is triggered.
    hilog.info(DOMAIN_NUMBER, TAG, `FormAbility onFormEvent, formId = ${formId}, message: ${JSON.stringify(message)}`);

    let list: Array<tztZFCardModel> = new Array()
    let item1: tztZFCardModel = new tztZFCardModel();
    item1.setName("测试1");
    item1.setPrice("666");
    item1.setPriceColor("#04B24B");
    list.push(item1)

    let item2: tztZFCardModel = new tztZFCardModel();
    item2.setName("测试2");
    item2.setPrice("777");
    item2.setPriceColor("#04B24B");
    list.push(item2)

    let item3: tztZFCardModel = new tztZFCardModel();
     item3.setName("测试3");
    item3.setPrice("888");
    item3.setPriceColor("#04B24B");
    list.push(item3)

    class FormDataClass {
      cardDataList: Array<tztZFCardModel> = list; // 和卡片布局中对应
    }

    let ccc = new FormDataClass()

    let formData: formBindingData.FormBindingData = formBindingData.createFormBindingData(ccc);

    formProvider.updateForm(formId, formData).then(()=>{
      console.log('success'+JSON.stringify(list))
    }).catch((err:BusinessError)=>{
      console.log('fail'+JSON.stringify(err))
    })
  }

使用LocalStorageProp 直接接收到的cardDataList就是数组 ,例如:

@LocalStorageProp('cardDataList') ListData: Array<tztZFCardModel>  = [];
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进