创建自定义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肯定是有问题