温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

OpenHarmony ListView如何复用

发布时间:2026-11-01 02:00:51 来源:亿速云 阅读:87 作者:小樊 栏目:软件技术

在 OpenHarmony(ArkUI) 中,“ListView 复用”这个说法需要稍微澄清一下,因为不同开发范式和组件形态不太一样:


一、如果你是 ArkTS / ArkUI(声明式开发)

✅ 推荐方式:使用 List + ForEach + LazyForEach(自动复用)

OpenHarmony 的 List 本身就支持节点复用,你不需要像 Android 那样手动写 ViewHolder。

1️⃣ 基础复用(ForEach)

List() {
  ForEach(this.dataList, (item) => {
    ListItem() {
      Text(item)
    }
  })
}

✅ 系统会自动:

  • 复用 ListItem
  • 只创建可视区域内的组件

2️⃣ 大数据量 LazyForEach(真正懒加载 + 复用)

class MyDataSource implements IDataSource {
  data: string[] = []

  totalCount(): number {
    return this.data.length
  }

  getData(index: number): string {
    return this.data[index]
  }

  registerDataChangeListener() {}
  unregisterDataChangeListener() {}
}

List() {
  LazyForEach(this.dataSource, (item) => {
    ListItem() {
      Text(item)
    }
  }, item => item)
}

✅ 特点:

  • 只渲染可视区域
  • 滚动时复用组件
  • 适合 长列表 / 千条以上数据

3️⃣ 复用关键点

项目 建议
列表项 用 ListItem
数据驱动 不要手动操作 DOM
Key LazyForEach 必须提供唯一 key
复杂布局 拆组件,避免重渲染

二、如果你是 类 Web / JS 开发(兼容模式)

如果是旧版 ListView 或类小程序写法:

<list>
  <list-item for="{{list}}" key="id">
    <text>{{$item.name}}</text>
  </list-item>
</list>

✅ 框架会自动复用 list-item


三、常见误区 ❌

❌ 手动 remove / add 节点
❌ 在 scroll 事件里频繁 setState
❌ 每个 item 都建新组件实例

这些都会 破坏复用机制


四、总结一句话

OpenHarmony 的 List 复用是“内置的”,你只要用 List + LazyForEach,不要手动管理节点即可。

如果你能告诉我:

  • OpenHarmony 版本(API 9 / 10 / 11)
  • 用的是 ArkTS 还是 JS
  • 是手机 / 穿戴 / 电视

我可以给你一份可直接跑的示例 Demo。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手