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:59阅读更多 →
综合实验搭建论坛

综合实验搭建论坛

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:59阅读更多 →
A2A 协议实战:从 Agent Card 到跨系统多智能体协作(MCP 之外的下一站)

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

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

2026/8/1 2:40:59阅读更多 →
全球可穿戴吸奶器市场份额第一:Momcozy如何重新定义“妈妈的时间”?

全球可穿戴吸奶器市场份额第一:Momcozy如何重新定义“妈妈的时间”?

【潮汐商业评论/文】 产假结束,重返职场的那一天,无数新手妈妈面对的第一道坎,不是工作节奏的重新适应,而是一个具体到分钟的现实难题:如何在上班时间里,完成一天数次、每次至少半小时的吸奶任务&#xff…

2026/8/1 3:55:25阅读更多 →
靠前的亚洲EMBA怎么选?民营企业家择校指南

靠前的亚洲EMBA怎么选?民营企业家择校指南

民营企业家、企业高管选EMBA,普遍面临择校难:分不清国际与本土项目差异、看不懂课程适配赛道、不清楚圈层资源匹配度,容易盲目报考、学无所用。本文从全球办学排名、院校办学定位、课程体系、学员圈层、产业资源五大客观维度,横向…

2026/8/1 3:55:25阅读更多 →
运维|devops|docker|docker私有仓库搭建(nexus)

运维|devops|docker|docker私有仓库搭建(nexus)

运维|devops|docker|docker私有仓库搭建(nexus)📑 目录1. 运维|devops|docker|docker私有仓库搭建(nexus)1.1 主流仓库比较1.2 如果Nexus基于docker部署1.2.1 重装1.3 Sonatype Nexus 开启docker1.3.1 激活 Docker Bearer Token Realm1.3.2 创建 Docker 专用的 Blob…

2026/8/1 3:55:25阅读更多 →
RS-485与MODBUS协议深度解析:从物理层到应用层的工业通讯实战指南

RS-485与MODBUS协议深度解析:从物理层到应用层的工业通讯实战指南

1. 项目概述:从物理层到应用层的工业通讯认知在工业自动化、楼宇自控、智能仪表这些领域里混迹多年的工程师,几乎每天都要和“485通讯”与“MODBUS”这两个词打交道。新手刚入门时,很容易被这两个术语绕晕,经常听到“用485通讯”、…

2026/8/1 3:55:25阅读更多 →
CCS铁魄EVA二号机二式深度评测:高端合金模型选购与养护全指南

CCS铁魄EVA二号机二式深度评测:高端合金模型选购与养护全指南

1. 这篇文章真正要解决的问题如果你是一位模型爱好者,或者正在寻找一款能代表《新世纪福音战士》二号机巅峰设计的收藏品,那么你很可能已经注意到了“CCS铁魄新世纪福音战士二号机二式”这款产品。但面对市场上琳琅满目的EVA模型,一个核心问题…

2026/8/1 3:55:25阅读更多 →
58-Skill技能框架:AI能力集成与自动化任务管理实践指南

58-Skill技能框架:AI能力集成与自动化任务管理实践指南

这次我们来看一个名为"58-Skill"的技术项目。从标题来看,这应该是一个技能相关的技术工具或框架,但具体信息比较有限。我们需要基于现有材料来构建一个完整的技术介绍。由于输入材料相对简单,我们将从技术项目的通用角度来分析58-S…

2026/8/1 3:53:23阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/31 20:44:05阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/31 17:41:43阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/31 20:44:05阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

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