在 OpenHarmony(ArkTS / ArkUI) 中,列表通常使用 List + ListItem 组件来实现。下面从基础用法 → 常用属性 → 数据绑定 → 点击事件 → 进阶用法逐步说明。
import { List, ListItem, Text } from '@ohos.arkui.advanced';
@Entry
@Component
struct ListExample {
build() {
List() {
ListItem() {
Text('Item 1')
}
ListItem() {
Text('Item 2')
}
ListItem() {
Text('Item 3')
}
}
}
}
interface ItemModel {
id: number
name: string
}
ForEach 渲染@Entry
@Component
struct ListExample {
private items: ItemModel[] = [
{ id: 1, name: '苹果' },
{ id: 2, name: '香蕉' },
{ id: 3, name: '橙子' }
]
build() {
List() {
ForEach(this.items, (item: ItemModel) => {
ListItem() {
Text(item.name)
.fontSize(18)
.padding(10)
}
}, (item) => item.id.toString())
}
}
}
✅ 注意:ForEach 第三个参数是 keyGenerator,必须唯一。
List({ space: 10 }) {
// items
}
.scrollDirection(Axis.Vertical) // 或 Axis.Horizontal
List({ space: 12 })
List() {
// items
}
.divider({
strokeWidth: 1,
color: '#EEEEEE',
startMargin: 10,
endMargin: 10
})
ListItem() {
Text(item.name)
}
.onClick(() => {
console.info('点击了:' + item.name)
})
List() {
ForEach(this.items, item => {
ListItem() {
Text(item.name)
}
})
}
.onReachEnd(() => {
console.info('到达列表底部,加载更多')
})
⚠️ 下拉刷新 OpenHarmony 目前需使用
Refresh组件(API 10+)
Refresh({ refreshing: this.isRefreshing }) {
List() {
// items
}
}
.onRefreshing(() => {
// 刷新逻辑
})
ListItem() {
Row() {
Image($r('app.media.icon'))
.width(40)
.height(40)
Text(item.name)
.margin({ left: 10 })
}
.padding(10)
}
ForEach 而非手动写多个 ListItemForEach 设置稳定 keyList({ space: 10 }) {
ForEach(this.items, item => {
ListItem() {
Text(item.name)
}
.onClick(() => console.info(item.name))
}, item => item.id.toString())
}
.divider({ strokeWidth: 1, color: '#EEE' })
如果你需要:
可以告诉我你的 OpenHarmony API 版本 + 使用场景,我可以直接给你完整 demo。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。