实现类似效果,我们一般是按照这样的思路进行开发:
1. 多选框:使用CheckboxGroup组件构建多选框标题,使用Checkbox组件构建多选框选项。
2. 删除多选框选项:通过CheckboxGroup的onChange回调获取到各个选项的选中状态,在删除操作中,将选中的选项从选项列表中删除。
3. 删除时弹出确认框:使用promptAction模块调用showDialog方法弹出对话框,通过回调获取到用户点击的是取消按钮还是确定按钮,如果是确定按钮则执行删除操作。
完整代码:
- import promptAction from '@ohos.promptAction';
- @Entry
- @Component
- struct CheckboxDemo{
- @State flexNameList:string[] = ['苹果','菠萝','柚子']
- private itemStatus:CheckboxGroupResult
- @Builder
- flexItem(checkboxName:string,groupName:string){
- Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
- Checkbox({ name:checkboxName, group:groupName})
- .selectedColor('#007DFF')
- Text(checkboxName)
- .margin({right:20})
- .fontSize(14)
- .lineHeight(20)
- .fontColor('#182431')
- .fontWeight(500)
- }.margin({ left: 36 })
- }
- build() {
- Column() {
- if (this.flexNameList.length != 0){
- Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
- CheckboxGroup({ group: 'fruit_list' })
- .selectedColor('#007DFF')
- .onChange((itemName: CheckboxGroupResult) => {
- this.itemStatus = itemName
- })
- Text('水果清单')
- .margin({right:20})
- .fontSize(14)
- .lineHeight(20)
- .fontColor('#182431')
- .fontWeight(FontWeight.Bold)
- }.margin({top:150})
- ForEach(this.flexNameList,(item:any)=>{
- this.flexItem(item,'fruit_list')
- })
- Button("删除")
- .margin({top:20,left:35})
- .fontSize(15)
- .padding({top:5,bottom:5,left:15,right:15})
- .onClick(()=>{
- promptAction.showDialog({
- title:'',
- message:'确定删除吗?',
- buttons:[
- {text:'取消', color:'#000000'},
- {text:'确定', color:'#000000'}
- ]
- })
- .then(data=>{
- if(data.index===1){
- for(let i of this.itemStatus.name){
- this.flexNameList.splice(this.flexNameList.indexOf(i),1)
- }
- }
- })
- })
- }else{
- }
- }.alignItems(HorizontalAlign.Center)
- }
- }
复制代码