0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙OS开发实例:【demo选择列表限定数量】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-03-26 22:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

效果图:

cke_143.png

示例代码

// 使用 DevEco Studio 3.1.1 Release 及以上版本,API 版本为 api 9 及以上。
// 主要功能及注意事项:
// 该组件展示了一个乘客选择列表。列表中的每个项目包含一个复选框和对应的乘客姓名,
// 用户点击任意一项即可切换其选中状态。组件通过限制最多只能选择5名乘客,
// 并在超过限制时通过promptAction模块弹出 toast 提示用户。
// 注意,代码中的Checkbox组件目前设置为不可更改(enabled(false)),
// 在实际应用中可以根据需求决定是否允许用户手动改变复选框状态。


// 导入提示操作模块
import promptAction from '@ohos.promptAction';

// 定义数据模型类ItemData
class ItemData {
  // 名字属性
  name: string;
  // 是否选中属性
  isSelect: boolean;

  // 构造函数初始化数据
  constructor(name: string, isSelect: boolean) {
    this.name = name;
    this.isSelect = isSelect;
  }
}

// 标记为入口文件并创建组件
@Entry
@Component
struct test {
  // 状态变量arr用于存储ItemData对象数组
  @State arr: Array< ItemData > = [
    new ItemData('赵大', false),
    new ItemData('钱二', false),
    new ItemData('张三', false),
    new ItemData('李四', false),
    new ItemData('王五', false),
    new ItemData('周六', false),
    new ItemData('李七', false),
    new ItemData('朱八', false)
  ];

  // 构建UI组件的方法
  build() {
    // 创建垂直方向布局
    Column() {
      // 显示提示文本
      Text('请选择乘客,最多限五人')
        .margin({ top: '60lpx', left: '50lpx', bottom: '10lpx' });

      // 遍历存储乘客信息的数据数组
      ForEach(this.arr, (item: ItemData, index: number) = > {
        // 创建水平方向布局
        Row() {
          // 创建复选框组件,禁用修改(此处可能是样式演示,实际应用中可去除.enabled(false))
          Checkbox()
            .enabled(false)
            .select(item.isSelect)
            .width('41lpx')
            .height('41lpx')
            .selectedColor("#FF53B175");

          // 显示乘客姓名文本
          Text(item.name)
            .fontSize('27lpx')
            .margin({ left: '10lpx' })
            .fontWeight(400)
            .fontColor(item.isSelect ? "#FF53B175" : "#FF181725")

          // 当行组件点击事件处理

        }
        .onClick(() = > {
          // 反转当前项的选中状态
          item.isSelect = !item.isSelect;

          // 计算已选中乘客数量
          let isSelectCount = 0;
          for (let i = 0; i < this.arr.length; i++) {
            if (this.arr[i].isSelect) {
              isSelectCount++;
            }
          }

          // 如果已选中超过5人,则恢复当前项未选中状态并弹出提示
          if (isSelectCount > 5) {
            item.isSelect = !item.isSelect;
            try {
              // 使用promptAction模块显示toast消息
              promptAction.showToast({
                message: '最多限五人',
                duration: 2000,
                bottom: '375lpx'
              });
            } catch (error) {
              // 忽略错误
            }
            return;
          }

          // 更新数组中对应项的状态
          this.arr[index] = new ItemData(item.name, item.isSelect);
        })
        // 设置行组件的边距
        .margin({ left: '40lpx', top: '10lpx' })
      })
    } // 设置Column组件的整体样式
    .width('100%')
    .height('100%')
    .backgroundColor("#FFF2F3F2")
    .justifyContent(FlexAlign.Start)
    .alignItems(HorizontalAlign.Start);
  }
}

审核编辑 黄宇

鸿蒙OS开发更多内容↓点击HarmonyOSOpenHarmony技术
鸿蒙技术文档开发知识更新库gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md在这。或+mau123789学习,是v喔
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 鸿蒙
    +关注

    关注

    60

    文章

    3058

    浏览量

    46263
  • 鸿蒙OS
    +关注

    关注

    0

    文章

    194

    浏览量

    5579
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    开源鸿蒙6.1 Release版本正式发布,在鸿OS 6.1率先完成升级适配!

    3月8日,开源鸿蒙6.1Release版本正式发布!作为新一代版本,6.1在应用开发能力、系统体验、多媒体与安全等领域带来全面升级,为生态商用落地注入全新动能。作为开放原子开源基金会黄金捐赠人、开源
    的头像 发表于 03-10 18:06 807次阅读
    开源<b class='flag-5'>鸿蒙</b>6.1 Release版本正式发布,在鸿<b class='flag-5'>OS</b> 6.1率先完成升级适配!

    证书数量达到上限处理方式

    AGC各个类型的证书都存在数量限制。当数量达到上限时,可选择以下任意一种方式处理: 废除对应类型下多余的证书。废除前请确保该证书未被任何应用使用。 当存在多个应用时,可以让多个应用使用同一个证书。以
    发表于 01-16 10:05

    FreeRTOS与uC/OS-II如何选择

    联网、消费电子、工业控制等领域。其开源许可、强大的生态系统、社区活跃度和 AWS 的强力支持是其不可比拟的优势。 uC/OS-II 是一个设计精良、久经考验的 RTOS, 以其可靠性和严谨性著称。开源后大大降低了使用门槛。它仍然是许多传统关键应用和熟悉其体系的开发者的可靠
    发表于 11-13 07:15

    【汇思博SEEK100开发板试用体验】在开发鸿蒙OS搭建QT开发环境

    、基于 SEEK100 开发板的 QT 鸿蒙应用开发流程 (一)创建 QT 项目 在 Qt Creator 中,通过常规的新建项目流程,选择合适的 Qt 项目模板,例如基于 Widg
    发表于 08-24 18:34

    【HarmonyOS 5】金融应用开发鸿蒙组件实践

    【HarmonyOS 5】金融应用开发鸿蒙组件实践 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财#
    的头像 发表于 07-11 18:20 1198次阅读
    【HarmonyOS 5】金融应用<b class='flag-5'>开发</b><b class='flag-5'>鸿蒙</b>组件实践

    鸿蒙5开发宝藏案例分享---一多开发实例(音乐)

    各位开发者小伙伴们好呀!今天咱们来点硬核干货!最近在鸿蒙文档中心挖到一座“金矿”——官方竟然暗藏了100+实战案例,从分布式架构到交互动效优化应有尽有!这些案例不仅藏着华为工程师的私房技巧,还直接
    的头像 发表于 06-30 11:54 900次阅读

    鸿蒙5开发宝藏案例分享---长列表性能优化解析

    鸿蒙列表性能优化大揭秘!告别卡顿,实战代码解析来了! 大家好呀~今天在翻鸿蒙开发者文档时,发现了个 性能优化宝藏案例 !官方居然悄悄放出了长列表
    发表于 06-12 17:40

    鸿蒙5开发宝藏案例分享---性能优化案例解析

    鸿蒙性能优化宝藏指南:实战工具与代码案例解析 大家好呀!今天在翻鸿蒙开发者文档时,意外挖到一个 性能优化宝藏库 ——原来官方早就提供了超多实用工具和案例,但很多小伙伴可能没发现!这篇就带大家手把手
    发表于 06-12 16:36

    鸿蒙5开发宝藏案例分享---一多开发实例(游戏)

    ?【开发者必看】鸿蒙隐藏宝箱大公开!这些实战案例让你的开发效率翻倍! 哈喽各位开发者小伙伴!今天要和大家分享一个让我拍大腿的发现——原来鸿蒙
    发表于 06-03 18:22

    鸿蒙5开发案例分享揭秘---一多开发实例(商务办公)

    ?【鸿蒙开发宝藏案例大揭秘】原来官方文档里藏了这么多好东西! 大家好呀~最近在肝鸿蒙项目时意外扒出了官方文档里的\"藏宝库\"!原来那些让人头秃的跨端适配难题,官方早就准备好
    发表于 06-03 16:24

    鸿蒙5开发宝藏案例分享---一多开发实例(地图导航)

    案例!最近在肝鸿蒙项目时意外发现了这个地图导航的\"一多\"开发实例,简直像发现新大陆!这就带大家沉浸式体验这个超实用的开发模板~ ? 先划重点:这个案例完美演示了如何用一套代码搞定
    发表于 06-03 16:17

    鸿蒙5开发宝藏案例分享---一多开发实例(旅行订票)

    ? 鸿蒙开发宝藏大发现!一多开发实战案例解析(旅行订票篇) 大家好!今天在翻鸿蒙开发者文档时,意外发现了官方藏着一整片\"案例绿洲\"!尤其
    发表于 06-03 16:16

    鸿蒙5开发宝藏案例分享---一多开发实例(购物比价)

    鸿蒙开发宝藏案例大公开!】手把手教你用\"一多\"能力打造跨端购物比价App 小伙伴们好呀!今天要和大家分享一个鸿蒙开发的隐藏宝典——官方购物比价应用
    发表于 06-03 16:07

    鸿蒙5开发宝藏案例分享---一多开发实例(社区评论)

    应用” 的一多开发实例,看完直呼“原来还能这样玩?!” ? 必须整理出来和大家唠唠,顺便带大家手把手拆解几个核心案例! ?** 一多开发是啥?一句话总结:** 一次开发,自动适配手机、
    发表于 06-03 16:03

    鸿蒙5开发宝藏案例分享---一多开发实例(长视频)

    【?鸿蒙开发宝藏案例大起底!原来官方藏了这么多干货!】 大家好呀~最近在折腾鸿蒙应用开发的时候,意外发现了官方文档里藏着一堆超实用的开发案例
    发表于 06-03 15:58