egret-docs-master/extension/EUI/dataCollection/list/README.md

75 lines
2.2 KiB
Markdown
Raw Permalink Normal View History

2024-06-19 13:32:32 +08:00
列表组件 List ,继承自 DataGroup它和 DataGroup 的区别在于:
* 在 List 中选中一项,会触发 `eui.ItemTapEvent.ITEM_TAP` 事件。
* List有选中项的概念可以设置 List 中的默认选中项。
下面是List的基本用法
~~~ typescript
class Main extends eui.Group {
constructor() {
super();
}
private list:eui.List;
protected createChildren() {
super.createChildren();
var exml = `
<e:Skin xmlns:e="http://ns.egret.com/eui" states="up,down" height="50"> <e:Label text="{data}" textColor.down="0xFFFFFF" textColor.up="0x666666" horizontalCenter="0" verticalCenter="0"/> </e:Skin>`;
var list = new eui.List();
list.dataProvider = new eui.ArrayCollection(["item1","item2","item3"]);
list.itemRendererSkinName = exml;
this.addChild(list);
this.list = list;
list.selectedIndex = 1;//设置默认选中项
list.addEventListener(eui.ItemTapEvent.ITEM_TAP,this.onChange,this);
}
private onChange(e:eui.PropertyEvent):void{
//获取点击消息
console.log(this.list.selectedItem,this.list.selectedIndex)
}
}
~~~
效果如下:
![](5604f13909a44.png)
~~~
设置默认选中项
list.selectedIndex = 1;
~~~
~~~
获取当前选中项的信息
list.selectedItem
list.selectedIndex
~~~
## 多选状态
List 还可以开启多选状态
~~~ TypeScript
list.allowMultipleSelection = true;
~~~
效果如下:
![](5625d92835954.png)
多选状态下List 中所有的条目都可以被选中,再次点击选中的条目则会取消选中,恢复原状。
此时监听 `eui.ItemTapEvent.ITEM_TAP` 事件,可以通过下面两个属性获得一个数组,里面包含了当前处于选中状态的项目:
~~~
list.selectedIndices
list.selectedItems
~~~
在多选状态下还有一个命令可以配合使用:
~~~ TypeScript
list.requireSelection = true;
~~~
该属性设置为 true 后,多选状态下最少有一个条目会被选中,不可以被取消。
## 滚动列表
列表配合 Scroller 使用可以实现滚动效果。
具体参考文档:[定位滚动位置](../../container/scroller/README.md#定位滚动位置)