HarmonyOS lazyForeach嵌套视图问题

使用LazyForEach新增嵌套内容,视图刷新,但是修改不刷新。

HarmonyOS
2024-10-17 09:44:05
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

请参考以下代码,数据源transcriptionResults是按照提供的数据结构构造:

@Entry  
@Component  
struct IndexList {  
  @State recordFiles: CommDataSource<ParagraphInfo<ParagraphItemInfo>> = new CommDataSource();  
  aboutToAppear() {  
    for (let i = 0; i < transcriptionResults.length; i++) {  
      this.recordFiles.pushData(transcriptionResults[i])  
    }  
  }  
  @Builder  
  myMenu() {  
    Column() {  
      Text("增")  
        .fontSize(18)  
        .width('100%')  
        .textAlign(TextAlign.Center)  
        .padding({ top: 5, bottom: 5 })  
        .border({  
          width: { bottom: 0.5 },  
          color: 0xcccccc  
        })  
        .onClick(() => {  
          this.recordFiles.pushData(transcriptionResults[0]);  
        })  
      Text("删")  
        .fontSize(18)  
        .width('100%')  
        .textAlign(TextAlign.Center)  
        .padding({ top: 5, bottom: 5 })  
        .border({  
          width: { bottom: 0.5 },  
          color: 0xcccccc  
        })  
        .onClick(() => {  
          this.recordFiles.deleteData(this.recordFiles.totalCount() - 1)  
        })  
      Text("改")  
        .fontSize(18)  
        .width('100%')  
        .textAlign(TextAlign.Center)  
        .padding({ top: 5, bottom: 5 })  
        .border({  
          width: { bottom: 0.5 },  
          color: 0xcccccc  
        })  
        .onClick(() => {  
          console.log('cwq recordFiles update totalCount ' + (this.recordFiles.totalCount()))  
          let targetArray = this.recordFiles.getDatas()[this.recordFiles.totalCount()-1];  
          this.recordFiles.notifyDataChange(this.recordFiles.totalCount() - 1)  
        })  
    }  
    .width(100)  
    .borderRadius(15)  
  }  
  build() {  
    Stack() {  
      List() {  
        LazyForEach(this.recordFiles, (item: ParagraphInfo<ParagraphItemInfo>) => {  
          ListItem() {  
            ParagraphItem({ itemInfo: item })  
          }  
        }, (item: ParagraphInfo<ParagraphItemInfo>) => JSON.stringify(item))  
      }  
      .cachedCount(3)  
      .listDirection(Axis.Vertical) // 排列方向  
      .scrollBar(BarState.Off)  
      .friction(0.6)  
      .divider({  
        strokeWidth: 2,  
        color: Color.White,  
      }) // 每行之间的分界线  
      .edgeEffect(EdgeEffect.Spring) // 边缘效果设置为Spring  
      .width('100%')  
      .height('100%')  
  
      Button('菜单', { type: ButtonType.Circle, stateEffect: true })  
        .backgroundColor(0x409eff)  
        .width(50)  
        .height(50)  
        .bindMenu(this.myMenu)  
    }  
    .width('100%')  
    .height('100%')  
    .backgroundColor(0xDCDCDC)  
    .padding({ top: 5 })  
  }  
}  
@Reusable  
@Component  
export struct ParagraphItem {  
  @ObjectLink itemInfo: ParagraphInfo<ParagraphItemInfo>;  
  build() {  
    Text() {  
      ForEach(this.itemInfo, (item: ParagraphItemInfo) => {  
        Span(item.content)  
      },  
        (item: ParagraphItemInfo) => JSON.stringify(item))  
    }  
    .width('100%')  
    .fontSize(16)  
    .textAlign(TextAlign.Start)  
    .backgroundColor(0xFFFFFF)  
  }  
}  
@Observed  
class ParagraphInfo<T> extends Array<T> {  
}  
class ParagraphItemInfo {  
  startTime: number = 0;  
  endTime: number = 0;  
  content: string = "";  
  index: number = 0;  
  recordTime: string = "";  
  isHighlight: boolean = false;  
}
分享
微博
QQ
微信
回复
2024-10-17 15:27:08
相关问题
HarmonyOS swiper + LazyForEach使用问题
146浏览 • 1回复 待解决
HarmonyOS Grid容器视图更新问题
336浏览 • 1回复 待解决
HarmonyOS 组件嵌套问题
259浏览 • 1回复 待解决
HarmonyOS Scroll 嵌套 RelativeContainer 问题
312浏览 • 1回复 待解决
HarmonyOS Scroll嵌套RelativeContainer 问题
180浏览 • 1回复 待解决
HarmonyOS 嵌套滑动问题
141浏览 • 1回复 待解决
HarmonyOS LazyForEach
212浏览 • 1回复 待解决
HarmonyOS list 嵌套web滑动切换问题
304浏览 • 1回复 待解决
HarmonyOS Tabs组件嵌套Tabs组件问题
508浏览 • 1回复 待解决
HarmonyOS Refresh组件嵌套滑动冲突问题
652浏览 • 1回复 待解决
使用LazyForEach懒加载列表相关问题
725浏览 • 1回复 待解决
HarmonyOS Tabs和Web嵌套左右滑动问题
168浏览 • 1回复 待解决
Web和List嵌套手势冲突问题
861浏览 • 1回复 待解决
嵌套JSON字符串解析问题
1858浏览 • 1回复 待解决