Flex4中s:List组件的使用

1.先来一个最简单的例子,关于s:List的使用

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
	<s:layout>
		<s:BasicLayout/>
	</s:layout>
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			
			[Bindable]
			private var array:ArrayCollection = new ArrayCollection([{id:1,city:"北京"},{id:1,city:"天津"},{id:3,city:"上海"}]);		]]>
	</fx:Script>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<s:List id="list1" dataProvider="{array}" labelField="city" x="87" y="101" width="144">
	</s:List>
</s:Application>

该例子使用ArrayCollection做为List的数据源,通过属性labelField="city",将city的内容绑定到List上

 

2.下面我们来改造一下上面的例子,在每一列添加顺序号,并且添加每一行数据的单击事件

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
	<s:layout>
		<s:BasicLayout/>
	</s:layout>
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			
			import spark.events.IndexChangeEvent;
			
			[Bindable]
			private var array:ArrayCollection = new ArrayCollection([{id:1,city:"北京"},{id:1,city:"天津"},{id:3,city:"上海"}]);


			protected function list1_changeHandler(event:IndexChangeEvent):void
			{
				Alert.show(list1.selectedItem.city);
			}

		]]>
	</fx:Script>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<s:List id="list1" dataProvider="{array}" labelField="city" x="87" y="101" width="144" change="list1_changeHandler(event)">
		<s:itemRenderer>
			<fx:Component>
				<s:ItemRenderer>
					<fx:Script>
						<![CDATA[
							import mx.controls.Text;
							override public function set data(value:Object):void {
								sn.text = String(itemIndex+1);
								txt.text = String(value.city);
							}
						]]>
					</fx:Script>
					<s:Label id="sn" x="0" />
					<s:Label id="txt" x="30" />
				</s:ItemRenderer>
			</fx:Component>
		</s:itemRenderer>
	</s:List>
</s:Application>

这个例子中添加顺序号主要是通过复写set data方法来实现的。

 

3.在第1个例子基础上做修改,为List组件添加右键菜单

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="application1_creationCompleteHandler(event)">
	<s:layout>
		<s:BasicLayout/>
	</s:layout>
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			import mx.events.FlexEvent;
		
			[Bindable]
			private var cm:ContextMenu;
			
			[Bindable]
			private var array:ArrayCollection = new ArrayCollection([{id:1,city:"北京"},{id:1,city:"天津"},{id:3,city:"上海"}]);

			protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
				cm = new ContextMenu();
				
				var cm1:ContextMenuItem = new ContextMenuItem("menu1",false);
				cm1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,item_selectHandler);
				
				var cm2:ContextMenuItem = new ContextMenuItem("menu2",false);
				cm2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,item_selectHandler);
				
				cm.customItems.push(cm1);
				cm.customItems.push(cm2);
			}
			
			private function item_selectHandler(e:ContextMenuEvent):void{
				Alert.show((e.target as ContextMenuItem).caption);
			}

		]]>
	</fx:Script>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<s:List id="list1" dataProvider="{array}" labelField="city" x="87" y="101" width="144" contextMenu="{cm}">
	</s:List>
</s:Application>

转载于:https://www.cnblogs.com/modou/articles/1895555.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值