列表 - list

# 列表: list ## 事件: item_click 当用户点击一个List中的项时会触发该事件。 ``` "ui"; $ui.layout( <frame> <list id="list"> <vertical> <text id="name" textSize="16sp" textColor="#000000" text="姓名: {{name}}"/> <text id="age" textSize="16sp" textColor="#000000" text="年龄: {{age}}岁"/> </vertical> </list> </frame> ); var items = [{ name: "小明", age: 18 }, { name: "小红", age: 30 } ]; $ui.list.setDataSource(items); $ui.list.on("item_click", function(item, i, itemView, listView) { toast("被点击的人名字为: " + item.name + ",年龄为: " + item.age); }); ``` ## 事件: item_click - item {any} 被点击的列表项的数据 - i {number} 被点击的列表项的位置 - itemView {View} 被点击的列表项的View - listView {View} 当前列表控件 当用户点击一个List中的项时会触发该事件。 ``` "ui"; $ui.layout( <frame> <list id="list"> <vertical> <text id="name" textSize="16sp" textColor="#000000" text="姓名: {{name}}"/> <text id="age" textSize="16sp" textColor="#000000" text="年龄: {{age}}岁"/> </vertical> </list> </frame> ); var items = [{ name: "小明", age: 18 }, { name: "小红", age: 30 } ]; $ui.list.setDataSource(items); $ui.list.on("item_click", function(item, i, itemView, listView) { toast("被点击的人名字为: " + item.name + ",年龄为: " + item.age); }); ``` ## 事件: item_long_click - event {object} 事件,字段有: - consumed {boolean} 设置此事件是否被消费 - view {View} 此事件对应的View - item {any} 被点击的列表项的数据 - i {number} 被点击的列表项的位置 - itemView {View} 被点击的列表项的View - listView {View} 当前列表控件 当用户长按一个List中的项时会触发该事件。 ## 事件: item_bind - itemView {View} 当前列表项的View - itemHolder {object} 当前列表项的管理对象,可动态获取列表项的位置和数据。 - item {any} 获取列表项的数据 - position {number} 获取列表项的位置 当列表创建一个新的列表项的View时触发该事件。实际上列表控件不会为列表控件的每个项目创建一个单独的View,假设列表为2000个,屏幕最多显示10个,那么列表控件只会创建10个左右的View。 这个事件通常用于对列表项的View设置事件回调,比如: ``` "ui"; $ui.layout( <frame> <list id="list"> <vertical> <text id="name" textSize="16sp" textColor="#000000" text="姓名: {{this.name}}"/> <checkbox id="checkbox" checked="{{this.checked}}"/> </vertical> </list> </frame> ); var items = [ { name: "小明", checked: false }, { name: "小红", checked: false } ]; $ui.list.setDataSource(items); $ui.list.on("item_bind", function(itemView, itemHolder) { itemView.checkbox.on("check", function (checked) { let item = itemHolder.item; item.checked = checked; console.log(item); }); }); ``` ## 事件: item_data_bind - itemView {View} 当前列表项的View - itemHolder {object} 当前列表项的管理对象,可获取列表项的位置和数据。 - item {any} 获取列表项的数据 - position {number} 获取列表项的位置 当列表将一个列表项的数据绑定到列表项的View时触发该事件。 ``` "ui"; $ui.layout( <frame> <list id="list"> <vertical> <text id="name" textSize="16sp" textColor="#000000" text="姓名: {{this.name}}"/> <checkbox id="checkbox" checked="{{this.checked}}"/> </vertical> </list> </frame> ); var items = [{ name: "小明", checked: false }, { name: "小红", checked: false } ]; $ui.list.setDataSource(items); $ui.list.on("item_data_bind", function (itemView, itemHolder) { let item = itemHolder.item; itemView.name.setTextColor(item.checked ? $colors.RED : $colors.BLACK); }); $ui.list.on("item_bind", function(itemView, itemHolder) { itemView.checkbox.on("check", function (checked) { let item = itemHolder.item; item.checked = checked; $ui.list.getAdapter().notifyItemChanged(itemHolder.position); }); }); ``` ```js "ui"; ui.layout( <frame> <list id="list"> <vertical> <text id="name" textSize="16sp" textColor="#000000" text="姓名: {{name}}"/> <text id="age" textSize="16sp" textColor="#000000" text="年龄: {{age}}岁"/> <button id="deleteItem" text="删除"/> </vertical> </list> </frame> ); var items = [ {name: "小明", age: 18}, {name: "小红", age: 30}, {name: "小东", age: 19}, {name: "小强", age: 31}, {name: "小满", age: 20}, {name: "小一", age: 32}, {name: "小和", age: 21}, {name: "小二", age: 1}, {name: "小贤", age: 22}, {name: "小三", age: 2}, {name: "小伟", age: 23}, {name: "小四", age: 3}, {name: "小黄", age: 24}, {name: "小五", age: 4}, {name: "小健", age: 25}, {name: "小六", age: 5}, {name: "小啦", age: 26}, {name: "小七", age: 6}, {name: "小哈", age: 27}, {name: "小八", age: 7}, {name: "小啊", age: 28}, {name: "小九", age: 8}, {name: "小啪", age: 29}, {name: "小十", age: 9} ]; ui.list.setDataSource(items); ui.list.on("item_click", function(item, i, itemView, listView){ toast("被点击的人名字为: " + item.name + ",年龄为: " + item.age); }); ui.list.on("item_bind", function(itemView, itemHolder){ itemView.deleteItem.on("click", function(){ let item = itemHolder.item; toast("被删除的人名字为: " + item.name + ",年龄为: " + item.age); items.splice(itemHolder.position, 1); }); }) ```