【Harmony】【鸿蒙】List列表View如果刷新内部的自定义View
创建自定义View
@Component
export struct TestView{@State leftIcon?:Resource = $r('app.media.leftIcon')@State leftText?:Resource | string = $r('app.string.leftText')@State rightText?:Resource | string = $r('app.string.rightText')@State rightIcon?:Resource = $r('app.media.rightIcon')build() {RelativeContainer() {.....}}
}
创建一个Dialog作为示例
@CustomDialog
@Component
export struct TestDialog {@State itemBean: Array<TestBean> = new Array()aboutToAppear(): void {// 创建几个条目this.itemBean.push(new TestBean())this.itemBean.push(new TestBean())this.itemBean.push(new TestBean())this.itemBean.push(new TestBean())this.itemBean.push(new TestBean())}build() {RelativeContainer() {Button("点击修改List的值让其刷新").onClick(()=>{// 点击修改List的值让其刷新....)List({ space: 0, initialIndex: 0 }) {ForEach(this.itemBean, (item: TestBean, index: number) => {ListItem() {TestView({leftIcon:item.leftIcon,leftText:item.leftText,rightText:item.rightText,rightIcon:item.rightIcon,})}}} }}
}
上面示例是一个类式Android RecycleView把条目封装成一个简单的自定义View
当点击Button时,我要改要让List里的条目刷新。
之前偿试过各种方法比如下面的
// 方法1: 把整个列表数组更新 无效果
this.itemBean = [... this.itemBean] // 方法2:改变某个索引让其更新,无效果
this.itemBean[2] = JSON.parse(JSON.stringify(this.itemBean[2]))// 方法3:删除并重新赋值 无效果
this.itemText.splice(2,1,this.itemBean[2])// 方法4:把itemBean 全部移除再添加 无效果
let copyItemBean = [... this.itemBean]
this.itemBean .pop()
this.itemBean .pop()
this.itemBean .pop()
this.itemBean .pop()
this.itemBean = copyItemBean
如果在 itemBean 后面添加一个View又有效果,,经过各种尝试想刷新某个item里的某个值一直失败。
经过几个小时的苦思若想,感觉直接使用itemBean肯定是有问题