HarmonyOS ForEach列表刷新问题

列表的刷新后的发布时间没有更新,因为刷新后数据源确实完全一致,但发布时间是通过当前的时间和发布时间的差值计算出来的,例如刚刚发布,2分钟前,1小时前这种,由于forEach只判断数据源是否发生变化,所以刷新后不会更新

HarmonyOS
10h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

可以尝试将时间差值加进数据源中,刷新时更新时间差,并把时间差作为forEach中keyGenerator的键值。可以实现刷新时重新计算时间差,并更新数据源中的时间差,达到数据源的变化从而更新数据。也可以自定义keyGenerator的键值的差值来实现自定义keyGenerator键值和前面提到的用时间差作为键值是一个意思,也需要循环加入进数据源中。此外还有一种方法,创建两个相同的,切换刷新,具体代码如下:

@Entry
@Component
struct Index {
  @State one: boolean = true;
  @State two: boolean = true;

  build() {
    Row() {
      Column() {
        Row() {
          Text('A')
            .layoutWeight(1)
          if (this.two) {
            Toggle({ type: ToggleType.Switch, isOn: this.one })
              .enabled(!this.two)
              .onChange((isOn) => {
                this.one = isOn;
              })
          } else {
            Toggle({ type: ToggleType.Switch, isOn: this.one })
              .enabled(!this.two)
              .onChange((isOn) => {
                this.one = isOn;
              })
          }
        }

        Row() {
          Text('B')
            .layoutWeight(1)
          Toggle({ type: ToggleType.Switch, isOn: this.two })
            .onChange((isOn) => {
              this.two = isOn;
            })
        }
        .margin({ top: "25vp" })
      }
      .width('100%')
      .margin({ left: '24vp', right: '24vp' })
      .layoutWeight(1)

    }
    .height('100%')
  }
}
分享
微博
QQ
微信
回复
9h前
相关问题
HarmonyOS 列表刷新问题
619浏览 • 1回复 待解决
HarmonyOS 数据刷新问题
52浏览 • 1回复 待解决
HarmonyOS 组件刷新问题
11浏览 • 1回复 待解决
HarmonyOS 页面刷新问题
312浏览 • 1回复 待解决
HarmonyOS UI 未刷新问题
534浏览 • 0回复 待解决
HarmonyOS 页面跳转刷新问题
853浏览 • 1回复 待解决
NativeWindowFlushBuffer接口刷新问题
2005浏览 • 1回复 待解决
HarmonyOS List item 刷新问题
770浏览 • 1回复 待解决
HarmonyOS 装饰器不刷新问题
185浏览 • 1回复 待解决
HarmonyOS 组件的下拉刷新问题
479浏览 • 1回复 待解决
HarmonyOS使用Refresh下拉刷新问题
863浏览 • 1回复 待解决
HarmonyOS 二维数组刷新问题
313浏览 • 1回复 待解决
HarmonyOS 状态变量不刷新问题
468浏览 • 1回复 待解决
HarmonyOS ForEach局部刷新
443浏览 • 1回复 待解决
刷新列表加载更多问题
326浏览 • 1回复 待解决
ForEach数组发生改变。UI没刷新
573浏览 • 1回复 待解决
HarmonyOS 通知列表刷新事件
10浏览 • 1回复 待解决