HarmonyOS鸿蒙Next中list组件

HarmonyOS鸿蒙Next中list组件 一、List组件及其使用

List是很常用的滚动类容器组件,一般和子组件ListItem一起使用,List列表中的每一个列表项对应一个ListItem组件。List组件通常需要搭配如ForEach组件对ListItem组件进行循环渲染。List组件里面的列表项默认是按垂直方向排列的,如果您想让列表沿水平方向排列,您可以将List组件的listDirection属性设置为Axis.Horizontal。常见的用法和效果如下所示:

List默认列表项布局为垂直方向,效果如下图所示:

List的列表项水平方向布局,效果如下截图所示:

.listDirection(Axis.Horizontal)

设置列表分割线,关键代码及效果如下图所示:

List组件子组件ListItem之间默认是没有分割线的,部分场景子组件ListItem间需要设置分割线,这时候您可以使用List组件的divider属性。divider属性包含四个参数:

关键代码:

.divider({strokeWidth:5,color:Color.Red,startMargin:10,endMargin:10})

List滚动事件监听:

List组件提供了一系列事件方法用来监听列表的滚动,您可以根据需要,监听这些事件来做一些操作:

.onScroll:列表滑动时触发,返回值scrollOffset为滑动偏移量,scrollState为当前滑动状态。

.onScrollIndex:列表滑动时触发,返回值分别为滑动起始位置索引值与滑动结束位置索引值。

.onReachStart:列表到达起始位置时触发。

.onReachEnd:列表到底末尾位置时触发。

.onScrollStop:列表滑动停止时触发。

二、示例代码如下

新建ListComponentPage.ets,添加如下代码:

@Entry
@Component
struct ListComponentPage {
  private arr: number[] = [0,1,2,3,4,5,6,7,8,9]
  build() {
    Column() {
      List({space: 10}){
        ForEach(this.arr,(item:number)=> {
          ListItem(){
            Text(`${item}`)
              .width('100%')
              .height(100)
              .fontSize(20)
              .fontColor(Color.White)
              .textAlign(TextAlign.Center)
              .borderRadius(10)
              .backgroundColor(0x007DFF)
          }
        })
      }
      // 分割线
      .divider({strokeWidth:5,color:Color.Red,startMargin:10,endMargin:10})
      // 设置成水平方向
      // .listDirection(Axis.Horizontal)
      // 滑动事件
      .onScrollIndex((firstIndex: number, lastIndex: number) => {
        console.info('滑动起始位置索引值' + firstIndex)
        console.info('滑动结束位置索引值' + lastIndex)
      })
      .onDidScroll((scrollOffset: number, scrollState: ScrollState) => {
        console.info('滑动偏移量' + scrollOffset)
        console.info('当前滑动状态' + scrollState)
      })
      .onReachStart(() => {
        console.info('列表起始位置到达')
      })
      .onReachEnd(() => {
        console.info('列表末尾位置到达')
      })
      .onScrollStop(() => {
        console.info('列表滑动停止')
      })
    }
    .padding(12)
    .height('100%')
    .backgroundColor(0xF1F3F5)
  }
}

更多关于HarmonyOS鸿蒙Next中list组件的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS鸿蒙Next中,List组件用于展示一组数据项,通常以垂直列表的形式呈现。List组件支持滚动、分页、懒加载等功能,适用于大量数据的展示场景。

List组件的主要特性包括:

  1. 数据绑定:通过ForEachLazyForEach进行数据绑定,支持动态更新列表项。
  2. 布局控制:支持自定义列表项的布局,包括高度、间距等属性。
  3. 事件处理:支持点击、长按等事件处理,用户可以与列表项进行交互。
  4. 性能优化:通过懒加载机制优化性能,仅渲染当前可见的列表项。
  5. 样式定制:支持自定义列表项的外观样式,包括背景色、字体、图标等。

示例代码:

@Entry
@Component
struct ListExample {
  private data: string[] = ['Item 1', 'Item 2', 'Item 3', 'Item 4']

  build() {
    List({ space: 10 }) {
      ForEach(this.data, (item: string) => {
        ListItem() {
          Text(item)
            .fontSize(20)
            .margin({ left: 10 })
        }
      })
    }
    .width('100%')
    .height('100%')
  }
}

在这个示例中,List组件展示了一个包含四个字符串的列表,每个列表项通过Text组件显示文本内容。

更多关于HarmonyOS鸿蒙Next中list组件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,List组件用于展示一组垂直排列的列表项,支持滚动查看。通过ListItem子组件定义每个列表项的内容和样式,开发者可以自定义列表的布局、交互和数据绑定。List组件还支持多种布局模式,如线性布局、网格布局等,并提供丰富的API用于处理列表项的点击、长按等事件,以及动态更新列表数据。

回到顶部