仓颉 ArkUI ListItem 组件完全指南:从基础创建到侧滑交互实战
文档知识库教程OpenHarmony【免费下载链接】CangjieCorpus本仓库为仓颉编程语言语料库聚焦 仓颉编程语言 核心知识体系整合官方开发指南、API 文档、典型代码示例及语法规范等多维度资源经结构化处理与专业标注构建为支持 RAG检索增强生成技术 的高质量知识基座适配智能编码助手、学习辅助工具等应用开发需求。 欢迎开发者基于本语料库构建仓颉语言智能应用推动鸿蒙开发生态智能化升级项目地址https://gitcode.com/Cangjie/CangjieCorpus点击查看免费下载本文以 OpenHarmony 仓颉CangjieArkUI 声明式开发框架中的ListItem组件为对象系统讲解其创建方式、selectable可选性控制、swipeAction划出组件配置与onSelect选择回调并结合仓库中的 List 容器、SwipeEdgeEffect枚举与侧滑删除实战代码帮助开发者快速掌握列表项组件的全部能力。ListItem 是什么ListItem是 ArkUI 声明式 UI 中用来展示列表具体item列表项的容器组件必须配合 List 组件来使用其父组件只能是List。在 List 组件参考文档中明确说明List的子组件仅支持ListItem与ListItemGroup而 ListItemGroup 的子组件又只能是ListItem。因此三者构成了容器 → 分组 → 列表项的层级关系。从列表开发指南可知ListItem表示单个列表项可以包含单个子组件List作为容器会自动按滚动方向排列子组件向列表中添加或移除组件会重新排列。典型的应用场景包括通讯录、消息列表、购物清单、设置页等需要连续展示同类数据的界面。导入模块与基本结构使用ListItem前需要导入 ArkUI 声明式开发接口import kit.ArkUI.*ListItem的子组件规则为可以包含单个子组件。也就是说一个ListItem内部只允许声明一个直接的子组件如果希望同时展示多个元素应使用Column、Row、Flex、Stack等布局容器进行组合。说明List的子组件索引值按子组件顺序依次递增ListItemGroup作为一个整体计算一个索引值其内部的ListItem不参与索引值计算if/else中只有条件成立分支内的子组件参与索引值计算ForEach/LazyForEach会展开计算所有子节点索引值。创建 ListItem 组件init(() - Unit)ListItem的构造函数用于创建一个列表项组件public init(child: () - Unit)功能创建ListItem组件。系统能力SystemCapability.ArkUI.ArkUI.Full起始版本22参数参数名类型必填默认值说明child() - Unit是-容器内的 ListItem 子组件。child是声明式闭包内部编写的组件树即为列表项的实际内容。由于ListItem只支持单个直接子组件child内通常是一个布局容器如Column、Row、Flex或单个文本、图片等基础组件。ListItem支持全部通用属性和全部通用事件这意味着诸如宽高、背景、边框、圆角、对齐、id、点击事件onClick等能力都可以直接作用于ListItem本身。使用 List 容器承载 ListItem由于ListItem必须配合List使用这里先给出 List 的初始化方法方便后续示例理解public init( space!: ?Int64 None, initialIndex!: ?Int32 None, scroller!: ?Scroller OptionScroller.None, child!: () - Unit )参数名类型必填默认值说明space?Int64否None子组件主轴方向的间隔。initialIndex?Int32否None设置 List 初次加载时视口起始位置显示的 item若设置值超过最后一个 item 的索引则不生效。scroller?Scroller否OptionScroller.None可滚动组件的控制器用于与可滚动组件绑定。child() - Unit是-声明容器内的 List 子组件。在 List 中还有若干与ListItem密切相关的容器级属性lanes(?Int32)设置列表中列或行的数量初始值 1单列。也支持lanes(minLength!: ?Length, maxLength!: ?Length)按最小/最大长度自适应确定列数。alignListItem(?ListItemAlign)当 List 交叉轴宽度大于ListItem交叉轴宽度 × lanes 时设置ListItem在交叉轴方向的布局方式初始值ListItemAlign.Start。multiSelectable(?Bool)是否启用多选初始值 false。cachedCount(?Int32)设置列表项的预加载数量初始值 1配合LazyForEach懒加载可减少滑动白块但会增大 CPU、内存开销。divider(OptionListDividerOptions)设置列表项分割线样式默认无分割线。组件属性func selectable(?Bool)控制列表项是否可选择public func selectable(value: ?Bool): This功能设置当前ListItem元素是否可选择。系统能力SystemCapability.ArkUI.ArkUI.Full起始版本22参数参数名类型必填默认值说明value?Bool是-ListItem 元素是否可选择。初始值true。selectable决定该列表项是否参与选择交互。当设置为false时该列表项将不会被选中例如点击选中、键盘焦点选中等典型使用场景是列表中的禁用项、分隔项或仅展示不可操作的条目。它与List的multiSelectable共同构成选择体系的开关容器决定是否允许多选单个ListItem决定自身是否可选。func swipeAction(...)设置 ListItem 的划出组件swipeAction是ListItem最常用的交互能力用于实现列表项左右滑动后露出操作按钮的侧滑菜单效果如侧滑删除、置顶、收藏等public func swipeAction( start!: ?CustomBuilder None, end!: ?CustomBuilder None, edgeEffect!: ?SwipeEdgeEffect Option.None, onOffsetChange!: ?(Float64) - Unit None ): This功能用于设置ListItem的划出组件。系统能力SystemCapability.ArkUI.ArkUI.Full起始版本22参数参数名类型必填默认值说明start?CustomBuilder否None命名参数。ListItem 向右划动时 item 左边的组件List 垂直布局时或 ListItem 向下划动时 item 上方的组件List 水平布局时。初始值{}。end?CustomBuilder否None命名参数。ListItem 向左划动时 item 右边的组件List 垂直布局时或 ListItem 向上划动时 item 下方的组件List 水平布局时。初始值{}。edgeEffect?SwipeEdgeEffect否Option.None命名参数。滑动效果。初始值SwipeEdgeEffect.Spring。onOffsetChange?(Float64) - Unit否None命名参数。滑动操作偏移量更改时调用。初始值{_: Float64 }。四个参数全部为命名参数其中start与end的类型 CustomBuilder 是() - Unit的类型别名即一个无参无返回值的闭包内部编写滑出组件的内容。start与end的方向语义与 List 的滚动方向有关List 垂直布局默认start是右滑时左侧划出的组件end是左滑时右侧划出的组件List 水平布局start是下滑时上方划出的组件end是上滑时下方划出的组件。SwipeEdgeEffect 滑动效果枚举SwipeEdgeEffect 枚举定义于cj-common-types.md具体定义如下public enum SwipeEdgeEffect : EquatableSwipeEdgeEffect { | Spring | None | ... }枚举值功能说明SpringListItem 划动距离超过划出组件大小后可以继续划动松手后按照弹簧阻尼曲线回弹。NoneListItem 划动距离不能超过划出组件大小。SwipeEdgeEffect.Spring允许过度滑动并回弹交互反馈更生动是默认的滑动效果SwipeEdgeEffect.None将划动距离限制在划出组件的大小内滑动更干脆、可控。该枚举实现了EquatableSwipeEdgeEffect并提供了与!运算符用于判断两个滑动效果是否相等。onOffsetChange 偏移量回调onOffsetChange在滑动偏移量发生变化时回调回调参数为当前偏移量Float64类型。开发者可以借此实现滑出组件随滑动距离动态变化的联动效果例如滑出按钮透明度随偏移量渐变偏移量超过阈值时高亮显示确认删除状态与edgeEffect配合实现超过最大偏移触发回弹/粘滞等自定义手势逻辑。组件事件func onSelect(?(Bool) - Unit)选择状态变化回调public func onSelect(event: ?(Bool) - Unit): This功能ListItem 元素被选择的状态改变时触发回调。系统能力SystemCapability.ArkUI.ArkUI.Full起始版本22参数参数名类型必填默认值说明event?(Bool) - Unit是-选择状态改变时的回调函数。初始值{ res: Bool }。回调参数res表示选择状态true表示该列表项被选中false表示被取消选中。注意该事件与selectable(true)配合才有意义——若某列表项selectable(false)则不会触发选择状态变化。典型用途单选场景下高亮当前选中项并记录选中索引多选模式下维护已选集合、联动全选按钮状态将选择状态同步到数据源或服务端。完整示例创建 ListItem 的基本用法文档示例通过ListForEach循环渲染 10 个ListItem每个列表项内放置一个居中的Text文本package ohos_app_cangjie_entry import kit.ArkUI.* import ohos.arkui.state_macro_manage.* Entry Component class EntryView { let arr [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] func build() { Column() { List(space: 20, initialIndex: 0) { ForEach(this.arr,itemGeneratorFunc: {item: Int64, _: Int64 ListItem() { Text(${item}) .width(100.percent) .height(100) .fontSize(16) .textAlign(TextAlign.Center) .borderRadius(10) .backgroundColor(0xFFFFFF) } } ) } .scrollBar(BarState.Off) .width(90.percent) } .width(100.percent) .height(100.percent) .backgroundColor(0xDCDCDC) .padding(top: 5.px) } }示例要点解读数据源let arr [0, 1, 2, ..., 9]定义 10 个列表项数据。List 容器List(space: 20, initialIndex: 0)设置列表项主轴间隔 20首次加载从索引 0 开始显示.scrollBar(BarState.Off)关闭滚动条。ForEach 循环渲染ForEach(this.arr, itemGeneratorFunc: {item: Int64, _: Int64 ListItem() {...}})基于数据源逐一生成ListItemitem为当前数据、第二个参数为索引。关于ForEach的详细用法可参考循环渲染。列表项样式每个ListItem内只有一个Text子组件符合仅包含单个子组件的约束并设置了宽高、字号、居中、圆角与背景色。实战进阶基于 swipeAction 实现侧滑删除列表开发指南中给出了响应列表项侧滑的完整实战方案这是swipeAction最典型的落地场景如通讯录消息列表左滑删除。其实现思路为end参数对应 ListItem 左滑时尾端划出的自定义组件即删除按钮初始化end时将当前列表项的索引传入删除按钮组件用户点击删除按钮时依据索引删除对应数据。第一步构建尾端滑出组件使用Builder定义一个接收索引参数的构建函数内部放置圆形删除按钮Builder func itemEnd(index: Int64) { // 构建尾端滑出组件 Button(ButtonOptions(shape: ButtonType.Circle)) { Image(r(app.media.ic_public_delete_filled)) .width(20) .height(20) } .onClick({ event // this.messages为列表数据源可根据实际场景构造。点击后从数据源删除指定数据项。 this.message.remove(index) }) }第二步将 swipeAction 绑定到 ListItem通过ForEach基于数据源循环渲染ListItem并将索引index绑定到itemEnd// 构建List时通过ForEach基于数据源this.messages循环渲染ListItem。 ListItem(){ Text(1111).height(20) } .swipeAction(end: { bind(this.itemEnd, this)(index)}) // index为该ListItem在List中的索引值这里使用bind(this.itemEnd, this)(index)将成员函数itemEnd绑定到组件实例并传入当前索引从而让每个列表项的删除按钮都对应自己的数据下标。当用户左滑列表项露出删除按钮并点击后即可从数据源中删除对应条目实现侧滑删除。小结ListItem是 ArkUI 列表体系的基石组件围绕它可以快速构建出功能完整、交互丰富的列表界面基础能力配合 List 容器通过init(child)声明单个子组件并支持全部通用属性与通用事件选择能力selectable控制单个列表项是否可选onSelect监听选择状态变化与List的multiSelectable搭配实现单选/多选侧滑能力swipeAction(start/end/edgeEffect/onOffsetChange)配置左右划出组件配合 SwipeEdgeEffect 的Spring/None两种滑动效果与onOffsetChange偏移量回调可实现侧滑删除、置顶、收藏等常见交互并支持水平与垂直两种列表方向的划出语义。如需深入了解列表容器的分组、懒加载、多列布局等能力可继续阅读 List、ListItemGroup 组件参考以及创建列表List开发指南。赞分享文档知识库教程OpenHarmony【免费下载链接】CangjieCorpus本仓库为仓颉编程语言语料库聚焦 仓颉编程语言 核心知识体系整合官方开发指南、API 文档、典型代码示例及语法规范等多维度资源经结构化处理与专业标注构建为支持 RAG检索增强生成技术 的高质量知识基座适配智能编码助手、学习辅助工具等应用开发需求。 欢迎开发者基于本语料库构建仓颉语言智能应用推动鸿蒙开发生态智能化升级项目地址https://gitcode.com/Cangjie/CangjieCorpus点击查看免费下载相关推荐OpenHarmony ArkUI 仓颉版 Slider 滑动条组件从创建参数到 onChange 事件的完整实战OpenHarmony ArkUI 仓颉版 Slider 滑动条组件从创建参数到 onChange 事件的完整实战 本篇围绕 OpenHarmony ArkU文档知识库教程OpenHarmony仓颉 ArkUI ListItemGroup 分组列表组件完全指南从 API 详解到吸顶吸底实战仓颉 ArkUI ListItemGroup 分组列表组件完全指南从 API 详解到吸顶吸底实战 分组列表如通讯录按字母分组、课程表按星期分组、设置页按功能文档知识库教程OpenHarmony仓颉 ArkUI 按钮组件Button开发指南创建、样式、事件与场景实战仓颉 ArkUI 按钮组件Button开发指南创建、样式、事件与场景实战 Button 是 ArkUI 中最常用的交互组件用于响应用户点击操作支持胶囊文档知识库教程OpenHarmony上一篇Crystal与Ruby语法对比面向开发者的完整指南与关键差异解析下一篇Catppuccin壁纸色彩心理学不同色调如何影响你的工作心情创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

自动化工程师入行指南:从PLC编程到现场调试的实战经验

自动化工程师入行指南:从PLC编程到现场调试的实战经验

1. 入行前必须想清楚的几件事1.1 自动化到底在做什么很多应届生对自动化的理解停留在“PLC编程”四个字上,觉得学会梯形图就算入行了。我带过好几个实习生,第一天问他们自动化是干什么的,回答基本都是“写程序控制机器”。这个答案不算错&…

2026/10/16 2:08:48 阅读更多 →
自编码器全解析:从PCA到VAE的家族谱系与工程实践

自编码器全解析:从PCA到VAE的家族谱系与工程实践

最近重读那本经典深度学习教材,翻到第14章时我停了很久。这一章讲的是自编码器,也就是Autoencoder。表面看非常简单:输入一个x,经过编码器得到一个h,再经过解码器重建一个x’,然后让x’尽量等于x。可一旦把…

2026/10/16 2:08:48 阅读更多 →
OpenClaw用户画像实时更新:触发条件、架构设计与避坑指南

OpenClaw用户画像实时更新:触发条件、架构设计与避坑指南

最近连续被好几个做对话机器人和智能客服的朋友问到同一个问题:OpenClaw 这类开源对话框架,用户画像到底能不能实时更新?触发条件又是什么?问的人多了,我发现大家其实卡在同一个地方——文档里写着“支持用户画像”&am…

2026/10/16 2:08:48 阅读更多 →

最新新闻

建筑改造项目的表计难题:拆不了换不动,水电气数据怎么远程拿?

建筑改造项目的表计难题:拆不了换不动,水电气数据怎么远程拿?

建筑改造项目做到水电配套这一步,表计怎么处理,常常是第一个卡住的地方。新建工程的表计配套相对简单。但改造项目和存量建筑不一样,每栋楼的情况都不同。有的管网锈了二十年不敢碰,有的管井窄到人侧身才能进去,有的本…

2026/10/16 2:49:57 阅读更多 →
steve-jobs - SKILL

steve-jobs - SKILL

name: steve-jobs description: “Agente que simula Steve Jobs — cofundador da Apple, CEO da Pixar, fundador da NeXT, o maior designer de produtos tecnologicos da historia e o mais influente apresentador de produtos do mundo.” risk: safe source: community …

2026/10/16 2:49:57 阅读更多 →
Eclipse配C++全指南:CDT插件与MinGW-w64环境搭建及排障

Eclipse配C++全指南:CDT插件与MinGW-w64环境搭建及排障

写Eclipse配C这事,网上教程一抓一大把,但大多是“下一步下一步”的截图流,看完装完一编译就傻眼。我自己从大一折腾到工作,中间踩过的坑比代码还多,什么CDT装不上、MinGW路径不对、调试器连不上,全都经历过…

2026/10/16 2:49:57 阅读更多 →
VS2019+Qt开发配置全攻略:版本选择、扩展安装与常见报错解决

VS2019+Qt开发配置全攻略:版本选择、扩展安装与常见报错解决

在VS2019里用Qt做开发,这个组合对不少Windows桌面程序员来说,属于"迟早要碰"的那类东西。但真正第一次动手的人会发现,从下载安装包到VS2019里弹出第一个窗口,中间隔着不少事先没人告诉你的决定:装Qt 5还是Q…

2026/10/16 2:49:56 阅读更多 →
CodeBuddy IDE实测:AI Agent如何重塑开发工作流

CodeBuddy IDE实测:AI Agent如何重塑开发工作流

打开下载页,看到 CodeBuddy IDE 的状态已经是"可下载",再扫一眼社区里关于 WorkBuddy 的讨论,大家都管它叫"腾讯版小龙虾",说实话我的第一反应是:腾讯这次是真的下场比赛了。2025 年的 AI 编程赛道…

2026/10/16 2:49:56 阅读更多 →
WuKongIM 动态数据节点生产就绪(Stage 9):持久化健康新鲜度、fail-closed 放置门禁与真实流量生命周期验证

WuKongIM 动态数据节点生产就绪(Stage 9):持久化健康新鲜度、fail-closed 放置门禁与真实流量生命周期验证

即时通讯后端 【免费下载链接】WuKongIM More than just IM 不只是即时通讯(IM) 项目地址: https://gitcode.com/gh_mirrors/wu/WuKongIM 点击查看 免费下载 在 WuKongIM 的动态节点生命周期体系中,Stage 9 解决的是“功能可用”与“生产可运维”之间的…

2026/10/16 2:48:56 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →