HarmonyOS 点击list的item,修改当前item的属性状态值List根据属性值变化刷新UI

HarmonyOS
2024-12-18 14:53:11
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
zbw_apple

参考如下demo:

export class ListModel {
  title: string;
  content: string;
  isComplete: boolean;

  constructor(title: string, content: string, isComplete: boolean) {
    this.title = title;
    this.content = content;
    this.isComplete = isComplete;
  }
}
@Entry
@Component
struct SyncPage {
  @State ListData: Array<ListModel> = [
    new ListModel('标题1', '内容1', true),
    new ListModel('标题2', '内容2', false),
    new ListModel('标题3', '内容3', false),
  ];

  build() {
    Column() {
      List() {
        ForEach(this.ListData, (item: ListModel, index: number) => {
          ListItem() {
            Row() {
              Row() {
                Text(item.title)
                Text(item.content).fontColor('#999999').fontSize(13)
              }

              Image(item.isComplete ? $r('app.media.ic_personal_focus') : $r('app.media.ic_personal_normal'))
                .width(20)
                .height(20)
                .margin(10)
            }
            .justifyContent(FlexAlign.SpaceBetween)
            .width('100%')
            .alignItems(VerticalAlign.Center)
            .height(80)
            .onClick(() => {
              let status = !item.isComplete
              this.ListData.map((el, itemIndex) => {
                if (itemIndex !== index) {
                  el.isComplete = false
                }
              })
              this.ListData.splice(index, 1, new ListModel(item.title, item.content, status))
            })
          }
        })
      }

      Button('确认', { type: ButtonType.Normal })
        .onClick(() => {
          console.log('打印listData选择的数据')
        })
    }

  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
分享
微博
QQ
微信
回复
2024-12-18 17:52:56
相关问题
list-item 根据boolean属性 动态设置class
5325浏览 • 1回复 待解决
HarmonyOS List item 刷新问题
1525浏览 • 1回复 待解决
HarmonyOS listitem如何保存状态
830浏览 • 2回复 待解决
HarmonyOS List组件指定item刷新实现方案
907浏览 • 1回复 待解决
Listitem点击变色有什么好方法吗
3224浏览 • 1回复 待解决
HarmonyOS listitem交互效果处理
1111浏览 • 1回复 待解决
HarmonyOSList是如何加载item
767浏览 • 2回复 待解决
HarmonyOS listitem支持托动效果吗?
784浏览 • 1回复 待解决
怎么获取List里面每个itemposition?
701浏览 • 1回复 待解决