在 OpenHarmony(ArkUI) 中,列表组件(如 List + ListItem)本身没有内置的多选模式,多选通常是通过状态管理 + 交互逻辑来实现的。下面按常见场景给你说明。
Set<string> 或 Array<string>)ListItem 增加 选中状态@Entry
@Component
struct MultiSelectList {
@State selectedItems: Set<number> = new Set()
private dataList: number[] = [1, 2, 3, 4, 5]
toggleSelect(item: number) {
if (this.selectedItems.has(item)) {
this.selectedItems.delete(item)
} else {
this.selectedItems.add(item)
}
}
build() {
Column() {
List() {
ForEach(this.dataList, (item: number) => {
ListItem() {
Row() {
Text(`Item ${item}`)
if (this.selectedItems.has(item)) {
Text('✔')
}
}
.width('100%')
.padding(10)
.backgroundColor(
this.selectedItems.has(item) ? '#d0ebff' : '#ffffff'
)
.onClick(() => this.toggleSelect(item))
}
})
}
}
}
}
✅ 点击即可多选
✅ 再次点击取消
ListItem() {
Row() {
Checkbox({ name: item.toString() })
.select(this.selectedItems.has(item))
.onChange((isSelected) => {
if (isSelected) {
this.selectedItems.add(item)
} else {
this.selectedItems.delete(item)
}
})
Text(`Item ${item}`)
}
}
@State allSelected: boolean = false
selectAll() {
this.selectedItems = new Set(this.dataList)
}
clearAll() {
this.selectedItems.clear()
}
console.log([...this.selectedItems])
Set 比 Array 更适合多选(去重、查找快)LazyForEach如果你用的是 eTS / ArkTS 版本、API 9 / 10 / 11,或者想要 左滑删除 + 多选 的示例,我可以给你更具体的代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。