ArkTS-ArkUI-List:列表

一.官方文档

List官方文档!

二.基础语法 

List(value?:{space?: number | string, initialIndex?: number, scroller?: Scroller})

列表是一种复杂的容器,当列表项达到一定数量,内容超过屏幕大小时,可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集,例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求(如通讯录、音乐列表、购物清单等)。 

列表项既可以纵向排列,又可以横向排列。

参数名

参数类型

必填

参数描述

space

number | string

子组件主轴方向的间隔。(主轴交叉轴可见Cloumn、Row

默认值:0

说明:

设置为除-1外其他负数或百分比时,按默认值显示。

space参数值小于List分割线宽度时,子组件主轴方向的间隔取分割线宽度。

initialIndex

number

设置当前List初次加载时视口起始位置显示的item的索引值。

默认值:0

说明:

设置为除-1外其他负数或超过了当前List最后一个item的索引值时视为无效取值,无效取值按默认值显示。

scroller

Scroller

可滚动组件的控制器。用于与可滚动组件进行绑定。

说明:

不允许和其他滚动类组件绑定同一个滚动控制对象。

space使用频率较高。 

List 包含ListItemListItemGroup子组件。

 List的子组件必须是ListItemGroup或ListItem,ListItem和ListItemGroup必须配合List来使用。

list是容器,listitem不是,是一个标记或约束代表list内部一项.

 三.案例

继续对ForEach代码优化:

添加容器List设置其元素间距为4,列表方向为垂直。

将“商品列表”高度设置为30,剩余空间由List全部填充(使用权重)。

 将渲染语句剪切进List中

 

 List的子组件必须为ListItemGroup或ListItem,可将其他容器嵌入ListItem中进行使用

 找到渲染的元素将其嵌入ListItem中

 

最终效果: 

最终代码:

class Item{
  name:string
  image:ResourceStr
  price:number
  discount:number

  constructor(name:string,image:ResourceStr,price:number,discount:number=0) {
    this.name=name
    this.image=image
    this.price=price
    this.discount=discount
  }
}

@Entry
@Component

struct Index {
  private items:Item[]=[   //Item类型 (Array<Item>)
    new Item('WATCH FIT 3',$r('app.media.watchfit3'),999,50),
    new Item('Pura 70',$r('app.media.pura70'),6999),
    new Item('Mate X5',$r('app.media.mateX5'),11999),
    new Item('Matepad 11.5S',$r('app.media.matePad'),2299),
    new Item('MateBook XPro',$r('app.media.mateBookXPro'),19999),
    new Item('FreeBuds Lipstick 2',$r('app.media.freeBudslipstick2'),1999),
    new Item('FreeClip',$r('app.media.freeclip'),1299)
  ]


  build() {
      Column({space:4}) {
        Row(){
          Text('商品列表')
            .fontSize(30)
            .fontStyle(FontStyle.Italic)
            .fontWeight(FontWeight.Bold)
        }
        .height(30)
        .width('100%')
        List({space:4}){    //间距为4
          ForEach(
            this.items,
            (item:Item)=>{    //:Item(类型)可不写,若不写下方无法直接弹出其参数
              ListItem(){
                Row({space:10}){
                  Image(item.image)
                    .width(100)
                  Column({space:4}){
                    if(item.discount) {
                      Text(item.name)
                        .fontWeight(FontWeight.Bold)
                        .fontSize(20)
                      Text('¥'+item.price)
                        .fontSize(15)
                        .fontColor('#CCC')
                        .decoration({type: TextDecorationType.LineThrough})  
                            //文本装饰线样式及其颜色
                      Text('补贴:¥'+item.discount)
                        .fontSize(16)
                        .fontColor(Color.Red)
                      Text('折扣价:¥'+(item.price-item.discount))
                        .fontSize(17)
                        .fontColor(Color.Red)
                    } else {
                      Text(item.name)
                        .fontWeight(FontWeight.Bold)
                        .fontSize(20)
                      Text('¥'+item.price)
                        .fontSize(17)
                        .fontColor(Color.Red)

                    }

                  }
                  .height('100%')
                  .alignItems(HorizontalAlign.Start)  //交叉轴上对齐方式
                }
                .height(120)      //每一行的行高固定
                .width('100%')
                .backgroundColor(Color.White)
                .borderRadius(20)   //边框圆角
                .padding(10)

              }



            }
          )

        }
        .lanes(1)           //几列,默认值为1
        .layoutWeight(1)    //布局权重
        .width('100%')
        .listDirection(Axis.Vertical)
        // .divider({strokeWidth:4,color:Color.Pink})

        // List({space:7}){
        //   ListItem(){
        //       //列表内容只能包含一个根组件
        //     Text('HarmonyOS')
        //   }
        // }
        // .width('100%')
        // .listDirection(Axis.Vertical)    //排列方向,垂直为默认




      }
      .height('100%')
      .width('100%')
      .backgroundColor('#FFECECEC')
      .padding(20)  //组件内部间距

  }
}

 

精简日常,品质自显不凡!

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这个字符串中包含多个订单信息,每个订单信息由订单号、客户ID和下单时间组成,不同订单信息之间用逗号分隔。我们可以先将字符串通过逗号分隔成一个列表,然后再对每个订单信息进行处理,提取出订单号、客户ID和下单时间,最后将它们组成一个新的列表。 以下是构建这个列表的代码示例: ```python order_str = "9208655568363_PpqXHLfR_2023-05-23 10:23:33,9208655568363_PpqXHLfR_2023-05-23 11:29:01,9897743396187_KsOenMkj_2023-05-23 13:38:41,9897743396187_KsOenMkj_2023-05-23 13:36:26,9897743396187_KsOenMkj_2023-05-23 13:49:54,4464658291113_MkyNvL7r_2023-05-23 14:02:25,5346354901402_KSoHAk50_2023-05-23 20:59:01,2594015267784_ciuFiuWJ_2023-05-23 10:49:26,2594015267784_ciuFiuWJ_2023-05-23 10:50:04,1441864604414_JZbxmcaU_2023-05-23 12:10:40,7269680396235_tJ6ssKAK_2023-05-23 13:40:10,2243828076109_QXbTLKJ6_2023-05-23 13:07:24" # 将字符串通过逗号分隔成一个列表 order_list = order_str.split(",") # 对每个订单信息进行处理,提取出订单号、客户ID和下单时间,最后将它们组成一个新的列表 result_list = [] for order in order_list: order_info = order.split("_") order_no = order_info[0] customer_id = order_info[1] order_time = order_info[2] + "_" + order_info[3] result_list.append([order_no, customer_id, order_time]) print(result_list) ``` 运行结果为: ``` [['9208655568363', 'PpqXHLfR', '2023-05-23 10:23:33'], ['9208655568363', 'PpqXHLfR', '2023-05-23 11:29:01'], ['9897743396187', 'KsOenMkj', '2023-05-23 13:38:41'], ['9897743396187', 'KsOenMkj', '2023-05-23 13:36:26'], ['9897743396187', 'KsOenMkj', '2023-05-2...```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值