牙叔教程 简单易懂
界面驱动数据
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文档, 最后才是群里问问 --- 牙叔教程
声明
部分内容来自网络 本教程仅用于学习, 禁止用于其他用途