【鸿蒙(HarmonyOS)】List列表、ArkUI资源组数据类型

news/2024/6/1 22:17:20 标签: list, 鸿蒙, harmonyos

一、引言

  • 描述:List列表在移动端设备中最为常见。比如:通讯录、短信、聊天软件等都,都拥有他的身影。
  • 难度:简单
  • 知识点:
  • 1、列表组件的使用
  • 2、认识ArkUI资源组数据类型

二、列表List

1、发现问题(Bug)

根据HarmonyOS官方给出一个样例,我先copy到了我的项目上运行,但在我的系统上却出现了问题,控制台爆了以下日志。

[phone]08-14 16:15:37.636   972 17976 E 03900/Ace: [Engine Log]Lifetime: 0.000000s
[phone]08-14 16:15:37.636   972 17976 E 03900/Ace: [Engine Log]Js-Engine: ark
[phone]08-14 16:15:37.636   972 17976 E 03900/Ace: [Engine Log]page: pages/Index.js
[phone]08-14 16:15:37.636   972 17976 E 03900/Ace: [Engine Log]Error message: is not callable
[phone]08-14 16:15:37.636   972 17976 E 03900/Ace: [Engine Log]Stacktrace:
[phone]08-14 16:15:37.636   972 17976 E 03900/Ace: [Engine Log]    at Contact (\ets\pages\Index.ets:19:9)
[phone]08-14 16:15:37.636   972 17976 E 03900/Ace: [Engine Log]    at SimpleContacts (\ets\pages\Index.ets:13:2)
[phone]08-14 16:15:37.636   972 17976 E 03900/Ace: [Engine Log]    at anonymous (webpack/startup:2:1)
[phone]08-14 16:15:37.636   972 17976 E 03900/Ace: [Engine Log]    at anonymous (./pages/Index.js:95:11)
[phone]08-14 16:15:37.636   972 17976 E 03900/Ace: [Engine Log]    at func_main_0 (\ets\pages\Index.ets:1:1)

认真去解读这些日志,发现问题出现在了 key: string = util.generateRandomUUID(true); generateRandomUUID()方法不可调用

在这里插入图片描述

2、完善代码

(1)效果

在这里插入图片描述

(2)代码

class Contact {
  // @ts-ignore
  id: integer;
  name: string;
  // @ts-ignore
  sex: integer;

  // @ts-ignore
  constructor(id:integer, name: string, sex: integer) {
    this.id = id;
    this.name = name;
    this.sex = sex;
  }
}

@Entry
@Component
struct SimpleContacts {
  private contacts = [
    new Contact(1000, '小明', 1),
    new Contact(1001, '小红', 2),
    new Contact(1002, '小歪', 3),
    new Contact(1003, '大红', 2),
  ]

  build() {
    List() {
      ForEach(this.contacts, (item: Contact) => {
        ListItem() {
          Row() {
            if (item.sex == 1) {
              Image($r('app.media.nan'))
                .width(40)
                .height(40)
                .margin(10)
            } else if (item.sex == 2) {
              Image($r('app.media.nv'))
                .width(40)
                .height(40)
                .margin(10)
            } else {
              Image($r('app.media.wai'))
                .width(40)
                .height(40)
                .margin(10)
            }
            Text(item.name).fontSize(20)
          }
          .width('100%')
          .justifyContent(FlexAlign.Start)
        }
      }, item => item.name)
    }.width('100%')
    .backgroundColor('#ffbfbfbf')
    .borderRadius(10)
    .divider({
      strokeWidth: 1,
      startMargin: 60,
      endMargin: 60,
      color: '#ffe9f0f0'
    })
  }
}

三、ArkUI资源组数据类型

最开始使用HarmonyOS,我以为数据类型和一些大众语言是一样的,没想到还是有所差异。于是就去翻了官方文档,具体的数据类型有如下几种:

类型名称
boolean布尔型
color颜色
float浮点型
intarray整型数组
integer整型
pattern样式
plural复数形式
strarray字符串数组
string字符串

官方给予的建议是通过JSON数据资源的形式来输出数据。本篇博客为了代码展示方便,就通过注解的手段,进行了强制转换。

在这里插入图片描述


http://www.niftyadmin.cn/n/5029346.html

相关文章

数据库开发-MySQL基础DQL和多表设计

1. 数据库操作-DQL DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录。 1.1 介绍 查询关键字:SELECT 查询操作是所有SQL语句当中最为常见,也是最为重要的操作。在一个正常的业务系统中,查询操作的使…

php函数str_repeat用法

在 PHP 中,str_repeat 函数用于重复一个字符串指定的次数,并返回重复后的结果字符串。 函数的语法如下: str_repeat(string $input, int $multiplier): string参数说明: $input:要重复的字符串。$multiplier&#x…

【C++】深拷贝和浅拷贝 ① ( 深拷贝与浅拷贝概念简介 | 浅拷贝与深拷贝对比 | 浅拷贝与深拷贝的使用场景 )

文章目录 一、深拷贝与浅拷贝概念简介1、浅拷贝2、深拷贝3、浅拷贝与深拷贝对比4、浅拷贝与深拷贝的使用场景 一、深拷贝与浅拷贝概念简介 1、浅拷贝 浅拷贝 : 浅拷贝赋值表层成员变量 : 拷贝对象时只拷贝对象的顶层成员 , 即仅复制 对象本身 及 对象成员变量 , 不复制成员变量…

【论文阅读】Cornus: Atomic Commit for a Cloud DBMS with Storage Disaggregation

Cornus Paper Preknowledge Share-Nothing Related Work Cornus: Atomic Commit for a Cloud DBMS with Storage Disaggregation ABSTRACT 传统2PC存在两个限制(缺点) Long Latency:long latency due to two eager log writes on the …

双系统ubuntu20.04(neotic版本)从0实现Gazebo仿真slam建图

双系统ubuntu20.04(neotic版本)从0实现Gazebo仿真slam建图 昨晚完成了ROS的多机通讯,还没来得及整理相关操作步骤,在进行实际小车的实验之前,还是先打算在仿真环境中进行测试,熟悉相关的操作步骤,计划通过虚拟机&…

python写代码过程中的坑230915

1.解释代码IndentationError: expected an indented block 这个错误通常是由于代码缩进错误导致的。 在Python中,代码块(如循环、条件语句、函数等)通常使用缩进来表示。因此,如果你在期望缩进的位置没有正确缩进代码,就会出现"IndentationError: expected an inden…

逆向-beginners之scanf

#include <stdio.h> int main() { int x; printf("Enter x:\n"); scanf("%d", &x); printf("you entered %d...\n", x); return 0; } #if 0 /* * x86 */ 在函数运行期间&#xff0c;EBP一直指向当前的栈帧(s…

PMC-LLaMA: Towards Building Open-source Language Models for Medicine

本文是LLM系列文章&#xff0c;针对《PMC-LLaMA: Towards Building Open-source Language Models for Medicine》的翻译。 PMC LLaMA&#xff1a;构建医学开源语言模型 摘要引言相关工作问题定义数据集构造实验结果结论 摘要 最近&#xff0c;大型语言模型&#xff08;LLM&am…