autojs数据驱动界面和界面驱动数据

简介: 牙叔教程 简单易懂

牙叔教程 简单易懂


界面驱动数据

checkbox状态改变后, 去修改与他绑定的数据

"ui";
ui.layout(
  <vertical gravity="center_horizontal">
    <horizontal gravity="center" margin="30">
      <checkbox id="checkbox"></checkbox>
    </horizontal>
  </vertical>
);
ui.checkbox.on("check", (checked) => {
  log(checked);
});


数据驱动界面

"ui";
engines.all().map((ScriptEngine) => {
  if (engines.myEngine().toString() !== ScriptEngine.toString()) {
    ScriptEngine.forceStop();
  }
});
ui.layout(
  <vertical gravity="center_horizontal">
    <list id="list">
      <horizontal gravity="center" w="*" margin="10">
        <text textColor="#222222" textSize="16sp" text="{{this.num}}"></text>
        <checkbox id="checkbox" checked="{{this.state}}"></checkbox>
      </horizontal>
    </list>
  </vertical>
);
let dataList = [];
for (var i = 0; i < 10; i++) {
  dataList.push({ num: i, state: !random(0, 1) });
}
ui.list.setDataSource(dataList);
ui.list.on("item_click", function (item, i, itemView, listView) {
  toastLog(i);
});
ui.list.on("item_bind", function (itemView, itemHolder) {
  //绑定勾选框事件
  itemView.checkbox.on("check", function (checked) {
    let item = itemHolder.item;
    item.state = checked;
  });
});
setTimeout(() => {
  dataList.map((item, i) => {
    item.state = !item.state;
  });
  ui.list.adapter.notifyDataSetChanged();
  toastLog("更新数据");
}, 2000);


UI界面

在这个代码示例中,

数据驱动界面与界面驱动数据共存

界面驱动数据

勾选框可以改变dataList中的数据

ui.list.on("item_bind", function (itemView, itemHolder) {
  //绑定勾选框事件
  itemView.checkbox.on("check", function (checked) {
    let item = itemHolder.item;
    item.state = checked;
  });
});


数据驱动界面

dataList修改后, 通知界面更新

setTimeout(() => {
  dataList.map((item, i) => {
    item.state = !item.state;
  });
  ui.list.adapter.notifyDataSetChanged();
  toastLog("更新数据");
}, 2000);


如何获取某个勾选框的状态?


每个勾选框都隐形或者显性的绑定一个序号,

通过序号来获取勾选框的状态

在dataList中, 有一个num键, 就是显性的给checkbox编一个序号,

当要获取某个checkbox的勾选状态时, 就这样做

dataList[num].state


这就要求我们, 要保持控件的状态和数据的强一致性

当checkbox被点击后, 要及时更新dataList中的数据;

当dataList的数据更改后, 要及时更新checkbox的状态

如何设置某个勾选框的状态?

setTimeout(() => {
  dataList[3].state = !dataList[3].state;
  ui.list.adapter.notifyDataSetChanged();
  toastLog("更新数据");
}, 4000);


先修改dataList指定序号的数据,

然后通知listView更新勾选框的状态


名人名言思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问 --- 牙叔教程


声明

部分内容来自网络 本教程仅用于学习, 禁止用于其他用途

相关文章
|
人工智能 前端开发 Java
autojs非常见函数1
牙叔教程 简单易懂
2545 0
|
Prometheus Cloud Native 数据库
Grafana 系列文章(九):开源云原生日志解决方案 Loki 简介
Grafana 系列文章(九):开源云原生日志解决方案 Loki 简介
|
JSON JavaScript API
【开源打印组件】vue-plugin-hiprint初体验
本文介绍对vue-plugin-hiprint部分重要代码的解析,这是一个很好的开源插件,能够自己自定义打印模板,通过后端传来的数据进行渲染打印,官方也提供了许多的api供开发者使用。界面采用了antdesign。实现了免预览的直接打印。
4312 1
【开源打印组件】vue-plugin-hiprint初体验
|
6月前
|
传感器 人工智能 安全
2025全球12款人形机器人技术解密:工业/医疗/物流场景落地全解析
从特斯拉专注量产的Optimus Gen 2利用自动驾驶AI技术,到Boston Dynamics专为极端环境设计的特技机器人Electric Atlas,每款机器人都针对特定市场需求提供独特功能。中国企业如优必选机器人以1.6万美元的G1价格颠覆市场,而Agility Robotics的鸟类机器人Digit则通过创新的机器人即服务模式聚焦物流领域。
676 0
|
7月前
|
人工智能 自然语言处理 算法
AI时代如何让大模型「读懂」企业数据?——从“单一问数”到“复杂决策”的智能跃迁
从早期的传统BI,到敏捷BI,再到智能BI,BI工具正逐步进化为具备类人推理能力的数字助手。Gartner预测,到2025年,增强型消费者体验将首次推动增强型BI(ABI)能力的采用率超过50%,这将深刻重塑企业的业务流程与决策模式,“人人都是数据消费者”的时代正加速到来。
1010 1
|
9月前
|
人工智能 自然语言处理 测试技术
自然语言生成代码一键搞定!Codex CLI:OpenAI开源终端AI编程助手,代码重构+测试全自动
Codex CLI是OpenAI推出的轻量级AI编程智能体,基于自然语言指令帮助开发者高效生成代码、执行文件操作和进行版本控制,支持代码生成、重构、测试及数据库迁移等功能。
2043 0
自然语言生成代码一键搞定!Codex CLI:OpenAI开源终端AI编程助手,代码重构+测试全自动
|
10月前
|
JSON 人工智能 前端开发
前端开发中使用whistle代理工具
Whistle是一款强大的代理工具,相比Charles、Fiddler更轻量且功能丰富。它适用于前端开发中的多种场景,如接口数据Mock、接口代理、静态资源代理等。通过简单的规则配置,可将接口指向本地JSON文件,解决跨域问题,或代理静态资源以满足特定域名访问需求。此外,Whistle还支持本地端口间转发与移动端请求抓包,搭配SwitchyOmega插件使用效果更佳。需注意,使用前请确保已安装Node环境并参考官方文档完成基础配置。
|
Web App开发 机器人 Linux
什么是GN?以及顺便学点构建系统。
什么是GN?以及顺便学点构建系统。
921 0
|
机器学习/深度学习 算法 数据挖掘
如何利用 BI 工具分析客户流失原因?
如何利用 BI 工具分析客户流失原因?
436 10