HarmonyOS ArkTS 的新手练手样例:用 List 和 ForEach 做一个待办列表
开头很多应用都绕不开列表消息列表、商品列表、设置项、文章列表、任务列表。ArkTS 里可以用List和ListItem展示列表用ForEach根据数组生成重复界面。这一篇我们做一个待办列表输入任务点击添加下面列表自动多一条。本篇目标会用数组保存列表数据。会用ForEach渲染多条内容。会用List和ListItem组织列表。会删除列表中的某一项。示例代码interfaceTodoItem{id:number;title:string;done:boolean;}EntryComponentstruct TodoPage{StateinputText:string;Statetodos:TodoItem[][{id:1,title:学习 Text 和 Button,done:true},{id:2,title:练习 TextInput,done:false}];privatenextId:number3;privateaddTodo(){consttitlethis.inputText.trim();if(title.length0){return;}this.todos[...this.todos,{id:this.nextId,title,done:false}];this.nextId1;this.inputText;}privateremoveTodo(id:number){this.todosthis.todos.filter((item:TodoItem)item.id!id);}build(){Column({space:16}){Text(我的待办).fontSize(28).fontWeight(FontWeight.Bold).width(100%)Row({space:8}){TextInput({placeholder:输入一个新任务,text:this.inputText}).layoutWeight(1).height(44).onChange((value:string){this.inputTextvalue;})Button(添加).height(44).onClick((){this.addTodo();})}List({space:10}){ForEach(this.todos,(item:TodoItem){ListItem(){Row({space:12}){Text(item.done?已完成:未完成).fontSize(12).fontColor(item.done?#008A45:#666666)Text(item.title).fontSize(16).layoutWeight(1).decoration({type:item.done?TextDecorationType.LineThrough:TextDecorationType.None})Button(删除).height(32).onClick((){this.removeTodo(item.id);})}.width(100%).padding(12).borderRadius(8).backgroundColor(#F5F5F5)}},(item:TodoItem)item.id.toString())}.layoutWeight(1).width(100%)}.width(100%).height(100%).padding(20)}}小白看懂代码todos是待办数组。列表页面一般都离不开数组。ForEach(this.todos, ...)表示根据todos数组生成多条列表项。ListItem()是列表中的一行。每一行里又放了一个Row左边是状态中间是任务标题右边是删除按钮。添加任务时没有直接pushthis.todos[...this.todos,{id:this.nextId,title,done:false}];这样写更符合声明式 UI 的思路生成一个新的数组再赋值给状态。删除任务时用filterthis.todosthis.todos.filter((item:TodoItem)item.id!id);意思是保留所有id不等于目标值的任务。为什么 ForEach 需要 key代码最后有一段(item:TodoItem)item.id.toString()这就是列表项的唯一标识。列表新增、删除、刷新时框架需要知道“哪一条是哪一条”。实际项目中不要用重复值当 key。可以怎么改可以给每条任务加一个完成按钮Button(item.done?恢复:完成).height(32).onClick((){this.todosthis.todos.map((todo:TodoItem){if(todo.iditem.id){return{id:todo.id,title:todo.title,done:!todo.done};}returntodo;});})也可以把待办列表改成文章列表、课程列表、商品列表。只要是“数组数据变成多行界面”都可以先从这个例子改。本篇小结列表的核心不是List本身而是“数据数组 ForEach 渲染 唯一 key”。新手先把新增、删除跑通再去学复杂的列表刷新、分页、懒加载会轻松很多。附录项目设置与构建问题记录一、项目设置本篇配套一个独立 ArkTS 示例 App用于运行页面和截图建议用 DevEco Studio 打开项目后运行entry模块。项目定位是截图练习 Demo不依赖后端服务也不需要额外权限。建议新建或检查工程时保持以下设置Project typeApplication。TemplateEmpty Ability。LanguageArkTS。ModelStage。DevicePhone可按需要兼容 Tablet、2in1。Runtime OSHarmonyOS。二、SDK 版本本文主题面向 HarmonyOS ArkTS API 24。本次示例工程根目录build-profile.json5使用如下配置{ compatibleSdkVersion: 6.1.1(24), targetSdkVersion: 6.1.1(24), runtimeOS: HarmonyOS }如果本机 DevEco Studio SDK Manager 中安装的版本不同请按本机实际 API 24 SDK 调整compatibleSdkVersion和targetSdkVersion。三、项目目录说明核心目录如下HarmonyOS_ArkTS_API24_ControlsScreenshotApp/ ├── AppScope/ │ ├── app.json5 │ └── resources/ ├── entry/ │ ├── src/main/ets/entryability/EntryAbility.ets │ ├── src/main/ets/pages/ │ ├── src/main/resources/base/profile/main_pages.json │ ├── build-profile.json5 │ └── oh-package.json5 ├── build-profile.json5 ├── hvigorfile.ts └── oh-package.json5页面文件都在entry/src/main/ets/pages/路由注册文件在entry/src/main/resources/base/profile/main_pages.json五、创建项目过程打开 DevEco Studio。点击 Create Project。选择 Application。模板选择 Empty Ability。开发语言选择 ArkTS。模型选择 Stage。设置项目名称例如ArkTSControlsDemo。选择保存路径建议路径只包含英文、数字、下划线或连字符。选择 API 24 对应 SDK。点击 Finish等待工程创建完成。打开entry/src/main/ets/pages/Index.ets。运行默认工程确认模拟器或真机能打开。再逐个添加本文中的页面代码并截图。六、本次编译安装遇到的问题与解决办法1. 中文路径导致 Hvigor 拒绝构建问题现象Invalid project path. Current path does not match: D:\私人资料\CSDN\HarmonyOS_ArkTS_API24_ControlsScreenshotApp原因Hvigor 对工程路径有限制路径只能包含英文字母、数字、连字符、下划线、英文句点、英文括号、空格或。处理办法把项目复制到 ASCII 路径后构建D:\\HarmonyOS_ArkTS_API24_ControlsScreenshotApp2.DEVECO_SDK_HOME环境变量无效问题现象Invalid value of DEVECO_SDK_HOME in the system environment path.处理办法在当前命令会话中临时指定 DevEco SDK 根目录$env:DEVECO_SDK_HOMED:\Program Files\Huawei\DevEco Studio Beta\sdk3.hvigor-config.json5缺少dependencies问题现象Schema validate failed ... missingProperty: dependencies处理办法补齐hvigor/hvigor-config.json5{ modelVersion: 5.0.0, dependencies: { } }4. 打包阶段找不到 Java问题现象spawn java ENOENT处理办法使用 DevEco Studio 自带 JBR并停止旧的 Hvigor daemon 后重新构建$env:JAVA_HOMED:\Program Files\Huawei\DevEco Studio Beta\jbr$env:PathD:\Program Files\Huawei\DevEco Studio Beta\jbr\bin;$env:Pathhvigorw--stop-daemon5. 构建成功但有弃用警告构建时出现过router.pushUrl、router.back、AlertDialog.show的弃用警告但不影响本次截图 Demo 编译和安装。正式项目建议后续按当前 API 推荐方式替换。七、本次安装启动记录构建命令hvigorw--mode module-p moduleentrydefault-p productdefault assembleHap安装命令hdc install entry-default-unsigned.hap启动命令hdc shell aastart-a EntryAbility-b com.csdn.arkts.controls.screenshot验证结果HAP 构建成功。模拟器目标127.0.0.1:5555。安装结果install bundle successfully。启动结果start ability successfully。

相关新闻

Ubuntu 26.04(GNOME + Wayland)重启键盘消失问题

Ubuntu 26.04(GNOME + Wayland)重启键盘消失问题

解决办法 1. 切换系统输入法框架为 fcitx5 bash im-config -n fcitx5弹出窗口确认选择 fcitx5。 2. 创建 fcitx5 开机自启(重点!启动的是 fcitx5,不是 configtool) bash mkdir -p ~/.config/autostart nano ~/.config/autos…

2026/8/1 2:40:46 阅读更多 →
综合实验搭建论坛

综合实验搭建论坛

1,安装需要的服务dnf install httpd mariadb php php-mysqli -y2,将Discus放在指定目录 并将它解压 并且修改以下文件权限unzip ... mv .. /var/www/html chmod 777 /upload/data /upload/config、3,浏览器访问 192.168.147.128/upload 如遇…

2026/8/1 2:40:46 阅读更多 →
A2A 协议实战:从 Agent Card 到跨系统多智能体协作(MCP 之外的下一站)

A2A 协议实战:从 Agent Card 到跨系统多智能体协作(MCP 之外的下一站)

A2A 协议实战:从 Agent Card 到跨系统多智能体协作(MCP 之外的下一站)2026 年被称为"智能体爆发年"。麦肯锡《2026 企业级 AI 代理经济报告》显示,采用多智能体协作架构的系统,任务完成率较单体 Agent 提升 …

2026/8/1 2:40:46 阅读更多 →

最新新闻

Windows系统下Python命令无响应问题排查与解决指南

Windows系统下Python命令无响应问题排查与解决指南

1. 问题场景:当你在CMD里输入 python ,世界突然安静了 如果你刚开始接触Python,或者刚刚重装了系统,大概率会遇到这个让人抓狂的场景:你兴冲冲地打开命令提示符(CMD),输入 pytho…

2026/8/1 3:15:59 阅读更多 →
如何用PyInstxtractor轻松破解Python程序包:5个逆向工程实战技巧

如何用PyInstxtractor轻松破解Python程序包:5个逆向工程实战技巧

如何用PyInstxtractor轻松破解Python程序包:5个逆向工程实战技巧 【免费下载链接】pyinstxtractor PyInstaller Extractor 项目地址: https://gitcode.com/gh_mirrors/py/pyinstxtractor PyInstxtractor 是一款专业的PyInstaller逆向工程工具,能够…

2026/8/1 3:15:59 阅读更多 →
MyBatis拦截器实现数据库字段透明加解密:注解驱动与AES-GCM实践

MyBatis拦截器实现数据库字段透明加解密:注解驱动与AES-GCM实践

1. 项目概述与核心价值在数据驱动的时代,数据安全已经从“可选项”变成了“必选项”。尤其是在处理用户身份信息、金融交易记录、联系方式等敏感数据时,任何一个环节的疏忽都可能导致严重的安全事件。作为后端开发者,我们经常面临一个两难选择…

2026/8/1 3:15:59 阅读更多 →
LaTeX多色修订系统:用xcolor与soul包实现高效协同写作

LaTeX多色修订系统:用xcolor与soul包实现高效协同写作

1. 从“一片红”到“五彩斑斓”:为什么我们需要在LaTeX中高亮修改如果你和我一样,经历过用LaTeX撰写论文、报告或者书籍的漫长过程,那你一定对那个经典的“一片红”场景不陌生。导师、合作者或者审稿人发回一个满是修订的PDF,你打…

2026/8/1 3:15:59 阅读更多 →
GHelper完整使用指南:告别臃肿,华硕笔记本轻量控制方案

GHelper完整使用指南:告别臃肿,华硕笔记本轻量控制方案

GHelper完整使用指南:告别臃肿,华硕笔记本轻量控制方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook,…

2026/8/1 3:15:59 阅读更多 →
Altair Inspire 2021 安装与配置全攻略:从零部署到拓扑优化实战

Altair Inspire 2021 安装与配置全攻略:从零部署到拓扑优化实战

1. 项目概述:为什么选择Altair Inspire 2021?如果你是一名机械工程师、结构设计师,或者对产品轻量化、拓扑优化和运动仿真感兴趣,那么“Altair Inspire”这个名字你一定不陌生。它是一款将“仿真驱动设计”理念平民化的强大工具&a…

2026/8/1 3:14:59 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →