HarmonyOS 鸿蒙Next array数据处理

发布于 1周前 作者 eggper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next array数据处理 再原有数据源的基础上,新增展开/收起; 点击展开,数据源最后一项新增(收起) 点击收起,数据源最后一项新增(展开)

按照下面写法,每次都会新增一条数据。这个需要怎么处理?

代码:

@Entry
@Component
struct Index {
@State arr: Array<string> = ['1', '2', '3', '4', '5'];
@State isShowAll: boolean = false

build() {
Column() {
ForEach(this.makeMenuList(this.arr), (item: string) => {
Text(item).height(44)
Divider()
})

Divider().strokeWidth(20).color(Color.White)
Button(this.isShowAll ? '展开' : '收起')
.onClick(() => {
this.isShowAll = !this.isShowAll
if (this.isShowAll) {
let temArr = this.arr
temArr.push('展开')
this
}
})
}
.height('100%')
.width('100%')
}

makeMenuList(arr: Array<string>): Array<string>{
if (this.isShowAll) {
arr.push('收起')
} else {
arr.push('展开')
}
return arr
}
}

更多关于HarmonyOS 鸿蒙Next array数据处理的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

可以参考这个demo

@Entry
@Component
struct SearchPage {
  @State isShow:boolean = false
  @State ht:number = 220
  @State textHt:number = 20
  @State arr: Array<string> = ['1', '2', '3', '4', '5'];
  @State isShowAll: boolean = false
  build() {
    Column(){
      Column(){
        ForEach((this.arr), (item: string) => {
          Text(item).height(44)
          Divider()
        })
      }
      .height(this.ht)
      .width('100%')
      .animation({
        duration: 300,
        curve: Curve.Linear
      })
      .margin({top:20})
      .backgroundColor('#e800f7ff')
      .alignItems(HorizontalAlign.Start)

      Button(this.isShowAll ? '展开' : '收起').onClick(() =>{
        this.isShowAll = !this.isShowAll
        this.ht = this.ht == 0 ? 220: 0
        this.textHt = this.textHt == 0 ? 20: 0
      })

    }
  }
}

更多关于HarmonyOS 鸿蒙Next array数据处理的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


@Entry
@Component
struct Index {
  @State arr: Array<string> = ['1', '2', '3', '4', '5'];
  @State isShowAll: boolean = false

  build() {
    Column() {
      ForEach(this.arr, (item: string,index:number) => {
        Text(item).height(44).visibility(index!=0 && this.isShowAll? Visibility.Hidden:Visibility.Visible)
        Divider().visibility(index!=0 && this.isShowAll? Visibility.Hidden:Visibility.Visible)
      })

      Divider().strokeWidth(20).color(Color.White)
      Button(this.isShowAll ? '展开' : '收起')
        .onClick(() => {
          this.isShowAll = !this.isShowAll
        })
    }
    .height('100%')
    .width('100%')
  }

  makeMenuList(arr:Array<string>):Array<string>{
    if (this.isShowAll) {
      arr.push('收起')
    } else {
      arr.push('展开')
    }
    return arr
  }
}

针对“HarmonyOS 鸿蒙Next array数据处理”的问题,以下是在鸿蒙系统中处理数组数据的一些基本方法和概念,不涉及Java或C语言相关内容。

在鸿蒙系统中,数组是一种常见的数据结构,用于存储相同类型的元素集合。处理数组数据通常包括数组的声明、初始化、访问、遍历和修改等操作。

  1. 声明数组:在鸿蒙系统中,可以使用特定的语法来声明数组,指定数组的类型和大小(如果大小是已知的)。

  2. 初始化数组:可以在声明数组的同时对其进行初始化,为数组的每个元素分配一个初始值。

  3. 访问数组元素:通过数组的索引来访问特定的元素。索引通常从0开始。

  4. 遍历数组:可以使用循环结构(如for循环)来遍历数组的每个元素,对它们进行读取或修改操作。

  5. 修改数组元素:通过索引来定位并修改数组中的特定元素。

鸿蒙系统可能提供了特定的API或库函数来简化数组的处理,但这些通常基于上述基本概念。开发者应查阅鸿蒙系统的官方文档,了解如何在其开发环境中高效地处理数组数据。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部