ArtUI的简单问题求助!

学习ArtUI的过程中创建了如下控件

@Component
export struct SlideSwitch {
  @State dataArray: SlideData[] = [
    new SlideData('收入', 'https://center.cdn.xiangmaikeji.com/finance_default.jpg'),
    new SlideData('支出', 'https://center.cdn.xiangmaikeji.com/finance_default.jpg')
  ]
  build() {
    Column() {
      Row() {
        ForEach(this.dataArray, (item: SlideData) => {
          Column() {
            Row() {
              Image(item.iconImage).width('20lpx').height('20lpx').borderRadius('20lpx')
              Text(`${item.name}`).fontColor(Color.Red).margin({ left: '15px' }).fontSize('12lpx')
            }.alignItems(VerticalAlign.Center).height('100%')
          }.width('49%')
          .alignItems(HorizontalAlign.Center)
          .height('100%')
          .backgroundColor(item.isSelected ? Color.Red: '#ECF1F5')
          .borderRadius('45lpx')
          .onClick((event) => {
            item.isSelected = !item.isSelected
            console.error(JSON.stringify(this.dataArray))
          })
        })
      }
    }.backgroundColor('#ECF1F5')
    .width('80%')
    .height('45lpx')
    .borderRadius('45lpx')
  }
}

class SlideData {
  public name: string
  public iconImage: string
  public isSelected: Boolean = false
  constructor(name: string, iconImage: string) {
    this.name = name;
    this.iconImage = iconImage;
  }
}

我打算在onClick修改model中的isSelected属性达到切换显示状态的目的

ArtUI的简单问题求助!-鸿蒙开发者社区日志显示数据已经变更了

ArtUI的简单问题求助!-鸿蒙开发者社区但是页面没有跟随发生变化!!
 

鸿蒙
ArtUI
HarmonyOS
2021-11-30 10:30:21
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
caseer

楼主你好,参考如下代码:

@Entry
@Component
struct VODTestComponent {
@State dataArray: SlideData[] = [
new SlideData('支出', '/common/test1.jpg', true),
new SlideData('收入', 'https://center.cdn.xiangmaikeji.com/finance_default.jpg', false)
]
build() {
Column() {
ForEach(this.dataArray, item => {
subComponent({subdata: item})
}, item=> item.iconImage)

}.backgroundColor('#ECF1F5')
.width('50%')
.height('75lpx')
}
}

@Component
struct subComponent {
@ObjectLink subdata : SlideData;
build() {
Row() {
Text(this.subdata.name).fontColor(Color.Blue).margin({ left: '15px' }).fontSize('24lpx')
Text(this.subdata.isSelected.toString())
}.alignItems(VerticalAlign.Center)
.width('100%')
.height('100%')
.border({width: 2, color: Color.Black})
.margin({top: 10})
.backgroundColor(this.subdata.isSelected ? Color.Red: '#ECF1F5')
.onClick((event) => {
this.subdata.isSelected = !this.subdata.isSelected;
console.info("itemisSelected------------" + this.subdata.isSelected)
})
}
}

@Observed
class SlideData {
public name: string = "default";
public iconImage: string;
public isSelected: Boolean = true;
constructor(name: string, iconImage: string, isSelected: boolean) {
this.name = name;
this.iconImage = iconImage;
this.isSelected = isSelected;
}
}

分享
微博
QQ
微信
回复
2021-11-30 15:18:03
相关问题
求助鸿蒙源代码问题
1279浏览 • 1回复 待解决
js调用Java,问题求助?
3738浏览 • 1回复 待解决
求助动画效果问题有懂吗?
2600浏览 • 1回复 待解决
求助:关于HTTP返回值问题
771浏览 • 1回复 待解决
@ohos.telephony.call问题求助
843浏览 • 1回复 待解决
关于鸿蒙APP升级问题求助
4234浏览 • 1回复 待解决
新手求助python(自然语言处理)问题
3863浏览 • 0回复 待解决
新人求简单封装方法?
2869浏览 • 1回复 待解决
求助:Ubuntu编译w800时遇到问题
4183浏览 • 1回复 待解决
CentOS 7.3 安装 Docker 简单方法
474浏览 • 1回复 待解决
LocatorCallback接口,求助
6830浏览 • 3回复 待解决
eTS求助 tabBarIcon代码样例 ?
4120浏览 • 1回复 待解决
新人求助!!!Deveco
288浏览 • 1回复 待解决