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文档, 最后才是群里问问 --- 牙叔教程


声明

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

相关文章
|
5月前
|
开发者 图形学 开发工具
Unity编辑器神级扩展攻略:从批量操作到定制Inspector界面,手把手教你编写高效开发工具,解锁编辑器隐藏潜能
【8月更文挑战第31天】Unity是一款强大的游戏开发引擎,支持多平台发布与高度可定制的编辑器环境。通过自定义编辑器工具,开发者能显著提升工作效率。本文介绍如何使用C#脚本扩展Unity编辑器功能,包括批量调整游戏对象位置、创建自定义Inspector界面及项目统计窗口等实用工具,并提供具体示例代码。理解并应用这些技巧,可大幅优化开发流程,提高生产力。
467 1
|
5月前
|
开发框架 API 开发者
Flutter表单控件深度解析:从基本构建到高级自定义,全方位打造既美观又实用的移动端数据输入体验,让应用交互更上一层楼
【8月更文挑战第31天】在构建美观且功能强大的移动应用时,表单是不可或缺的部分。Flutter 作为热门的跨平台开发框架,提供了丰富的表单控件和 API,使开发者能轻松创建高质量表单。本文通过问题解答形式,深入解读 Flutter 表单控件,并通过具体示例代码展示如何构建优秀的移动应用表单。涵盖创建基本表单、处理表单提交、自定义控件样式、焦点管理和异步验证等内容,适合各水平开发者学习和参考。
122 0
|
5月前
|
数据可视化 数据挖掘 持续交付
Axure Web端元件库:从Quick UI到500+组件的飞跃
在快速变化的数字世界中,产品设计不仅仅是功能的堆砌,更是用户体验的精心雕琢。原型设计作为产品开发过程中的关键环节,其重要性不言而喻。Axure,作为业界领先的原型设计工具,凭借其强大的交互设计和丰富的功能,赢得了全球设计师和开发者的信赖。而Axure Web端元件库,则是这一平台上的一颗璀璨明珠,它以超过500个精心设计的组件为基础,为设计师们打开了一扇通往高效、高质量原型设计的大门。
209 0
|
6月前
打开系统应用管理界面
打开系统应用管理界面
41 0
|
JSON 程序员 数据格式
【平台开发】技术整合思考(三)——将工具程序封装成界面
【平台开发】技术整合思考(三)——将工具程序封装成界面
113 0
|
前端开发 BI C#
手麻系统源码,C# .net 桌面软件,采用下拉式汉化菜单,界面友好,实用性强
提供手术病人检索、手术申请、手术安排、急诊手术,查看手术申请单、查看手术通知单,填写病人术前会诊记录、谈话记录、麻醉记录,器械准备、手术记录、附加手术、器械清点及术后护理信息等功能。 提供手术查询、手术报表查询、术后信息统计等查询功能。
184 0
手麻系统源码,C# .net 桌面软件,采用下拉式汉化菜单,界面友好,实用性强
|
存储 JavaScript 前端开发
HaaS UI小程序解决方案基础教学之三: JSAPI页面导航
JavaScript(简称“JS”)是一种基于对象和事件驱动并具有相对安全性的高级编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中。在物联网领域,利用JavaScript来开发前端页面,也逐步成为了一种趋势。
HaaS UI小程序解决方案基础教学之三: JSAPI页面导航
|
JavaScript 前端开发 小程序
HaaS UI小程序解决方案基础教学之二: 搭建第一个UI页面
AliOS Things: 阿里云智能IoT团队自研的物联网操作系统,目前已获得国家 HaaS:全称是Hardware as a Service,阿里云智能IoT团队基于AliOS Things系统推出的硬件即服务 HaaS UI:全称是Hardware as a Service User Interface,是源自AliOS Things操作系统上的一套应用&图形解决方案,支持C/C++和 JS两种开发语言
HaaS UI小程序解决方案基础教学之二: 搭建第一个UI页面
|
安全 数据可视化 网络协议
Excel用户的福音:不用写代码就能开发一个带界面的程序!
2015年,微软内部一个项目悄悄开始开发,主要目的是解决「Excel用户」不想编程,重复劳动多,下班晚等问题。2021年,这个项目终于来了,让不会写代码的你也能驯化计算机!
222 0
Excel用户的福音:不用写代码就能开发一个带界面的程序!