【鸿蒙应用】List、ListItem和ListItemGroup组件

List组件是一个列表组件,包含一系列相同宽度的列表,适合连续、多行呈现同类数据的,比如图片。

ListItem组件是用来展示列表具体项的 item ;ListItemGroup组件是用来展示列表 item 分组的,这两个组件必须是配合 List 组件来使用。

比如:

interface ItemType {
  title: string;
  projects: string[]
}

@Entry
@Component
struct ToDoList {
  @State title: string = '';
  private timetableListItemGroup: ItemType[] = [
    {
      title: "星期一",
      projects: ["语文", "数学"]
    }, {
    title: "星期二",
    projects: ["语文", "数学"]
  }, {
    title: "星期三",
    projects: ["语文", "数学"]
  }, {
    title: "星期四",
    projects: ["语文", "数学"]
  }, {
    title: "星期五",
    projects: ["语文", "数学"]
  },
  ];

  onPageShow() {
    console.info('Index onPageShow');
  }

  onPageHide() {
    console.info('Index onPageHide');
  }

  onBackPress() {
    console.info('Index onBackPress');
    return true // 返回true表示页面自己处理返回逻辑,不进行页面路由;返回false表示使用默认的路由返回逻辑,不设置返回值按照false处理
  }

  aboutToAppear() {
    console.info('MyComponent aboutToAppear');
  }

  onDidBuild() {
    console.info('MyComponent onDidBuild');
  }

  aboutToDisappear() {
    console.info('MyComponent aboutToDisappear');
  }

  build() {
    Column() {
      List({ space: 2 }) {
        ForEach(this.timetableListItemGroup, (item: ItemType) => {
          ListItemGroup() {
            ForEach(item.projects, (project: string) => {
              ListItem() {
                Text(project)
                  .width("100%")
                  .height("30")
                  .fontSize(20)
                  .textAlign(TextAlign.Center)
              }
            }, (item:string) => item)
          }
          .borderRadius(10)
          .divider({strokeWidth:1,color:0xDCDCDC})
          .margin({
            bottom:10
          })
          .border({width:1,color:"blue"})
        })
      }
    }
    .margin({
      left: 10,
      top: 10,
      right:10
    })
  }
}

组件效果如图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

读心悦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>