如何获取滚轮停止后的选中值:wheel-picker-cj 滚动监听与回调机制详解
如何获取滚轮停止后的选中值wheel-picker-cj 滚动监听与回调机制详解【免费下载链接】wheel-picker-cj滚轮选择UI组件项目地址: https://gitcode.com/Cangjie-TPC/wheel-picker-cjwheel-picker-cj是一个基于仓颉语言的滚轮选择 UI 组件库提供日期、地区、年、月、日、自定义等多种选择器。很多新手最常问的一个问题就是滚轮停下来之后我怎么知道用户选中了哪一项本文带你快速搞懂它的滚动监听与回调机制几行代码即可拿到选中值。一、原理选中值在「滚动停止」那一刻才会回调理解 wheel-picker-cj 的回调机制先要知道内部三个滚动事件的分工事件触发时机作用onScroll滚动过程中持续触发同步选中幕布、记录偏移量onScrollEnd手指离开且滚动停止后对齐吸附、计算选中索引、触发选中回调onScrollEdge滚到顶部/底部边缘循环模式下无缝衔接的数据位移也就是说组件会等你松手、滚轮彻底停稳并完成对齐吸附之后才把最终选中项的位置索引和数据交给你的监听器。以年选择器为例回调正是在onScrollEnd中发起的核心逻辑见 wheel_year_picker_component.cj先根据偏移量对齐到最近的整行再取出mOnItemSelectedListener并调用onItemSelected(position, data)。 这就解释了新手常见疑惑为什么快速滚动时收不到回调因为组件只关心最终停在哪里滚动中的中间状态不会触发。二、两种回调接口一张表看懂监听器所有回调接口集中定义在 listener.cj接口适用选择器回调方法参数含义OnItemSelectedListener年、月、日、日期选择器onItemSelected(position, data)选中项索引 选中值OnAreaSelectedListener地区三级联动选择器onProvinceSelected/onCitySelected/onAreaSelected各级的索引 名称两者的共同点都在对应滚轮停止并吸附完成后触发拿到的就是用户最终确认的选中值。三、年/月/日选择器一行代码注册监听年、月、日选择器都通过 Model 的setOnItemSelectedListener()注册监听可链式调用this.showWheelYearPicker this.showWheelYearPicker .setYearRangeStart(1972) .setYearRangeEnd(2025) .setOnItemSelectedListener(MyOnItemSelectedListener())然后实现监听接口滚轮停止后就能弹出选中值public class MyOnItemSelectedListener : OnItemSelectedListener { public func onItemSelected(position: Int64, data: Int64): Unit { PromptAction.showToast(message: 选中索引${position}选中值${data}) } }position选中项在数据列表中的索引data选中的值年选择器中即年份数字完整示例可参考 wheel_year_picker.cj 与官方文档 feature_api.md 的年选择器章节。四、自定义选择器用 setSelectDataShow 拿选中数据自定义选择器的数据是字符串数组它的回调方式是闭包setSelectDataShow()参数就是选中的文本.showWheelPickerMiddle this.showWheelPickerMiddle .setData(this.arr) .setSelectDataShow({ text: String PromptAction.showToast(message: Centre: text) })实现细节在 wheel_picker_component.cj组件先用onTouch记录手指抬起滚动停止时再计算吸附位置最后调用mSelectDataShow(mSelectedData)。 小技巧如果不想等回调也可以随时主动查询当前值——getCurrentItemPosition()拿索引、getCurrentItemData()拿数据。五、地区选择器三级联动各滚轮独立回调地区选择器是省/市/区三个滚轮联动每一级停止时都会分别回调非常适合做地址校验public class MyOnAreaSelectedListener : OnAreaSelectedListener { public func onProvinceSelected(provincePos: Int64, provinceName: String): Unit { PromptAction.showToast(message: 选中省份${provincePos} - ${provinceName}) } public func onCitySelected(cityPos: Int64, cityName: String): Unit { PromptAction.showToast(message: 选中城市${cityPos} - ${cityName}) } public func onAreaSelected(areaPos: Int64, areaName: String): Unit { PromptAction.showToast(message: 选中地区${areaPos} - ${areaName}) } }通过setOnAreaSelectedListener()注册即可示例见 wheel_area_picker.cj。回调触发点分别位于 wheel_area_picker_component.cj 中省、市、区三个滚轮的onScrollEnd分支内。六、新手常见坑与排查清单✅监听器没注册务必在aboutToAppear()中链式调用setOnItemSelectedListener()漏掉这一步回调永远不触发。✅索引 ≠ 值position只是数组下标真正的选中值要看data年选择器或名称地区选择器。✅回调只认停止快速滑动过程中没有回调这是设计使然若需要滚动中实时更新需自行监听onScroll自行换算。✅自定义选择器的触发前提它依赖手指抬起事件程序化滚动不会触发setSelectDataShow回调。✅想直接读当前值各 Model 都提供主动查询方法如getSelectedItemPosition()、getCurrentItemData()、getYear()/getMonth()/getCurrentDate()无需等待回调。七、核心文件速查回调接口定义wheelpicker/src/main/cangjie/listener.cj自定义选择器组件回调触发实现wheelpicker/src/main/cangjie/wheel_picker_component.cj年选择器组件监听回调示例wheelpicker/src/main/cangjie/wheel_year_picker_component.cj地区选择器组件三级联动回调wheelpicker/src/main/cangjie/wheel_area_picker_component.cj完整 API 与示例doc/feature_api.md掌握这套「滚动停止 → 吸附对齐 → 监听器回调」的机制后你就可以在任意页面中把用户选中的值安全地拿到手放心接入业务逻辑啦 【免费下载链接】wheel-picker-cj滚轮选择UI组件项目地址: https://gitcode.com/Cangjie-TPC/wheel-picker-cj创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

碳资产保险框架如何为交通与能源行业筑牢风险防线

碳资产保险框架如何为交通与能源行业筑牢风险防线

当初看到“1089 Inc.携手Price Forbes与Oka-Lloyd,通过Syndicate 1922推出面向交通与能源领域的碳资产保险框架”这条消息时,我第一反应不是“又多了个绿色保险”,而是:碳资产这个市场,终于开始像做保险那样做保险了。…

2026/9/25 3:20:44 阅读更多 →
LangChain+MCP(模型上下文协议)实现案例:用 TaoToken 统一 Key 打通 Agent 工具链

LangChain+MCP(模型上下文协议)实现案例:用 TaoToken 统一 Key 打通 Agent 工具链

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 3:20:44 阅读更多 →
从Prompt到SKILL.md:构建高可用AI技能包的实战指南

从Prompt到SKILL.md:构建高可用AI技能包的实战指南

这段时间我翻了不少 Skills 项目,说句得罪人的话:社区里八成以上的“Skills”,本质就是一段 Prompt 换个后缀,连及格线都没到。自从 Claude Code、Cursor、Codex 这些工具陆续把 Skills 变成“一等公民”,好像一夜之间…

2026/9/25 3:19:43 阅读更多 →

最新新闻

工业AI Agent落地实战:从良率异常分析到智能体架构拆解

工业AI Agent落地实战:从良率异常分析到智能体架构拆解

1. 工厂里的AI Agent到底在干什么1.1 从一条产线异常说起去年冬天,我在一家做精密结构件的工厂里蹲了三天。产线上一台注塑机的良率突然从98.6%掉到94%出头,班组长第一反应是"原料批次有问题",换了料还是不行;第二反应是…

2026/9/25 4:04:09 阅读更多 →
AI4AI实战:用EvoX和EvoMap自动进化优化Agent系统

AI4AI实战:用EvoX和EvoMap自动进化优化Agent系统

1. 从一条热搜说起:AI4AI 到底在做什么第一次看到 EvoX 和 EvoMap 这两个词出现在热搜榜上的时候,我正蹲在一个 Agent 项目的调试现场,满屏的agent execution terminated due to error刷得人头皮发麻。当时第一反应是:又来了一个新…

2026/9/25 4:04:09 阅读更多 →
Livox ROS2驱动编译部署指南:从零到一避开所有坑

Livox ROS2驱动编译部署指南:从零到一避开所有坑

说出来你可能不信,一个号称“只 clone 就能编译”的激光雷达 ROS2 驱动,让我在编译阶段就折腾了两个晚上。拿到 Mid-360 那天,我原本的计划是半小时跑通:装依赖、克隆仓库、colcon build、启动 RViz 看点云。结果是colcon build那…

2026/9/25 4:04:09 阅读更多 →
STM32+4G模块+MQTT接入阿里云物联网平台完整指南

STM32+4G模块+MQTT接入阿里云物联网平台完整指南

1. 方案选型与整体架构拆解1.1 为什么是STM324G模块MQTT阿里云做物联网设备接入这件事,最常见的需求就是:现场设备采集数据,我要在千里之外的电脑上或者手机App上实时看到这些数据,必要时还能远程下发指令。这个需求落到硬件端&am…

2026/9/25 4:04:09 阅读更多 →
python-for-android 真机单元测试应用(On Device Unit Tests)完全指南:构建、运行与结果验证

python-for-android 真机单元测试应用(On Device Unit Tests)完全指南:构建、运行与结果验证

开发工具构建工具移动开发 【免费下载链接】python-for-android Turn your Python application into an Android APK 项目地址: https://gitcode.com/gh_mirrors/py/python-for-android 点击查看 免费下载 导读 本文围绕 python-for-android 仓库中 testapps/on_d…

2026/9/25 4:04:09 阅读更多 →
Not Shading:调试阶段去修饰化,让底层结构暴露

Not Shading:调试阶段去修饰化,让底层结构暴露

1. 从“Not Shading”这个标题说起:它到底在指什么第一次看到“Not Shading”这个标题,很多人会愣一下。Shading在图形学里是“着色”,在数据分析里是“阴影填充”,在UI设计里是“明暗处理”,在写作里是“轻描淡写”。…

2026/9/25 4:03:08 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →