創建自定義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肯定是有問題