flex自定义list显示成表格的样式,增加单击事件

flex自定义list展示成表格的样式,增加单击事件


flex自定义list展示成表格的样式,增加单击事件:下面是截图

flex自定义list显示成表格的样式,增加单击事件
 
1.主flex页面

<?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" 
			   xmlns:supportClasses="com.esri.ags.skins.supportClasses.*"
			   minWidth="955" minHeight="600"  
			   xmlns:List="components.List.*" creationComplete="application1_creationCompleteHandler(event)" >
	<s:layout>
		<supportClasses:AttachmentLayout/>
	</s:layout>
	<fx:Script>
		<![CDATA[
			import events.ListClickEvent;
			
			import mx.collections.ArrayCollection;
			import mx.events.FlexEvent;
			
			[Bindable]
			public var linename:String;
			
			
			[Bindable]
			private var valueAC:ArrayCollection = new ArrayCollection( [
				{ hour: "1",  value: 1500 },
				{ hour: "2",  value: 200 },
				{ hour: "3",  value: 500 },
				{ hour: "4",  value: 1200 },
				{ hour: "5",  value: 575 } ]);
			
			
			[Bindable]
			private var valueAC2:ArrayCollection = new ArrayCollection( [
				{ hour: "1",  value: 1000 },
				{ hour: "2",  value: 300 },
				{ hour: "3",  value: 700 },
				{ hour: "4",  value: 1200 },
				{ hour: "5",  value: 500 } ]);
			
			protected function mylist1_listItemClickHandler(event:ListClickEvent):void
			{
				trace(event.lablepinyi);
				var lablepinyi:String=event.lablepinyi;
				if(lablepinyi=="cuijiang" || lablepinyi=="yutan" )
				{
					linechart.dataProvider=valueAC;
				}else{
					linechart.dataProvider=valueAC2;
				}
				
				linename=event.lablename;
			}

			protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
				linename="翠江";
				linechart.dataProvider=valueAC;
			}

		]]>
	</fx:Script>
	<fx:Declarations>
		<mx:SolidColorStroke id = "s2" color="blue" weight="2"/>
		<s:ArrayList id="lylist">
			<fx:Object number="1" drainagebasin="翠江"  hour="13" arealRainfall="-999"  level="无风险" pingyin="cuijiang"/>
			<fx:Object number="2" drainagebasin="万安"  hour="13" arealRainfall="-999"  level="低风险" pingyin="wanan"/>
			<fx:Object number="3" drainagebasin="渔谭"  hour="13" arealRainfall="-999"  level="中风险" pingyin="yutan"/>
			<fx:Object number="4" drainagebasin="常山"  hour="13" arealRainfall="-999"  level="高风险" pingyin="changshan"/>
		</s:ArrayList>
	</fx:Declarations>
	<s:VGroup gap="0">
		<s:BorderContainer  width="528" height="35" borderVisible="false" borderWeight="0" backgroundImage="@Embed('images/tableheader.png')">
			<s:HGroup paddingLeft="30" verticalAlign="middle" width="100%" height="100%" >
				<s:Label  text="各流域风险等级" color="0x0F6A95" fontSize="14" fontWeight="bold" fontFamily="宋体"/>
			</s:HGroup>	
		</s:BorderContainer>
		<s:BorderContainer  width="528" borderVisible="false">
			<s:Rect id="backgroundRect" left="0" right="0" top="0" bottom="0">
				<s:fill>
					<s:SolidColor color="0xdbdbdb" />
				</s:fill>
			</s:Rect>
			<s:Rect left="1" right="1" top="0" bottom="1">
				<s:fill>
					<s:SolidColor color="0xebecec" />
				</s:fill>
			</s:Rect>
			<s:HGroup height="33" verticalAlign="middle" gap="0">
				<s:Label text="" color="0x333333" width="40"/>
				<s:Label text="序号" color="0x333333" width="80"/>
				<s:Label text="流域" color="0x333333" width="100"/>
				<s:Label text="累积小时" color="0x333333" width="100"/>
				<s:Label text="降雨量" color="0x333333" width="100"/>
				<s:Label text="风险等级" color="0x333333" width="105"/>
			</s:HGroup>	
		</s:BorderContainer>
		<List:MyList itemRenderer="components.List.MyListItemRenderer" listItemClick="mylist1_listItemClickHandler(event)"   width="528" height="150"  dataProvider="{lylist}"  borderVisible="false">	
		</List:MyList>
		<s:HGroup paddingTop="5" />
		<s:BorderContainer  width="528" height="35" borderVisible="false" borderWeight="0" backgroundImage="@Embed('images/tableheader.png')">
			<s:HGroup paddingLeft="30" verticalAlign="middle" width="100%" height="100%" >
				<s:Label  text="{linename}流域累计降水量图" color="0x0F6A95" fontSize="14" fontWeight="bold" fontFamily="宋体"/>
			</s:HGroup>	
		</s:BorderContainer>
		<s:Group>
			<s:Rect left="0" right="0" top="0" bottom="0">
				<s:stroke>
					<s:SolidColorStroke color="0xb9b9b9" weight="1"/>
				</s:stroke>
			</s:Rect>
			<mx:LineChart id="linechart" height="323" width="528"
						  paddingLeft="5" paddingRight="5" 
						  showDataTips="true" >
				
				
				<!--categoryField:横坐标数据节点-->
				<mx:horizontalAxis>
					<mx:CategoryAxis id="h1" 
									 categoryField="hour"
									 title="时间(h)"/>
				</mx:horizontalAxis>
				
				<mx:horizontalAxisRenderers>
					<mx:AxisRenderer placement="bottom" axis="{h1}" />
				</mx:horizontalAxisRenderers>
				
				<!--纵坐标-->
				<mx:verticalAxisRenderers>
					<mx:AxisRenderer placement="left" axis="{v1}" />
				</mx:verticalAxisRenderers>
				
				<!--yField:纵坐标数据节点-->
				<mx:series>						
					<!--纵坐标轴1-->
					<mx:LineSeries id="cs1" horizontalAxis="{h1}" form="curve"  yField="value" displayName="时间(h)/降水量(MM)" lineStroke="{s2}">
						<mx:verticalAxis>
							<mx:LinearAxis id="v1" title="降水量(MM)"/>
						</mx:verticalAxis>
					</mx:LineSeries>
					
				</mx:series>
			</mx:LineChart>
		</s:Group>			
	</s:VGroup>
</s:Application>

 2.自定义的事件类,传递点击表格的内容

package events {
	import flash.events.Event;
	
	public class ListClickEvent extends Event {
		public var lablepinyi:String;
		public var lablename:String;

		public function ListClickEvent(type:String, lablepinyi:String,lablename:String ) {
			super(type, true);
			this.lablepinyi = lablepinyi;
			this.lablename = lablename;
		}
		
		override public function clone():Event {
			return new ListClickEvent( type, lablepinyi,lablename );
		}
	}
}

 

 3.自定义的List类:

package components.List
{
	import spark.components.List;
	
	[Event(name="listItemClick",type="events.ListClickEvent")]
	public class MyList extends List
	{
		public function MyList()
		{
			super();
		}
	}
}

 

4.自定义的list呈示器:

 

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
				xmlns:s="library://ns.adobe.com/flex/spark" 
				xmlns:mx="library://ns.adobe.com/flex/mx" 
				autoDrawBackground="true">
	<fx:Metadata>
		[Event(name="listItemClick",type="events.ListClickEvent")]
	</fx:Metadata>
	<fx:Script>
		<![CDATA[
			import events.ListClickEvent;
			
			import mx.controls.Alert;
			
			protected function getColor(data:Object):uint
			{
				var lindex:int= Number(data.number.toString());
				if(lindex%2==0){
					return 0xf5f6f6;
				}else{
					return 0xffffff;
				}
			}
			
			
			protected function getColorRect(data:Object):uint
			{
				var level:String= data.level.toString();
				if(level=="无风险"){
					return 0x008aff;
				}else if(level=="低风险"){
					return 0xfdd868;
				}else if(level=="中风险"){
					return 0xff861a;
				}else if(level=="高风险"){
					return 0xff001e;
				}else {
					return 0x008aff;
				}
			}
			

			protected function bordercontainer1_clickHandler(event:MouseEvent):void
			{
				var listclickevent:ListClickEvent=new ListClickEvent("listItemClick",data.pingyin,data.drainagebasin);
				dispatchEvent(listclickevent);
			}

		]]>
	</fx:Script>
	<s:BorderContainer  width="528" borderVisible="false" click="bordercontainer1_clickHandler(event)">
		<s:Rect id="backgroundRect" left="0" right="0" top="0" bottom="0">
			<s:fill>
				<s:SolidColor color="0xdbdbdb" />
			</s:fill>
		</s:Rect>
		<s:Rect left="1" right="1" top="0" bottom="1">
			<s:fill>
				<s:SolidColor  color="{getColor(data)}"/>
			</s:fill>
		</s:Rect>
		<s:HGroup height="33" verticalAlign="middle" paddingLeft="40" gap="0">
			<s:Label text="{data.number}" color="0x666666" width="80"/>
			<s:Label text="{data.drainagebasin}" color="0x666666" width="100"/>
			<s:Label text="{data.hour}" color="0x666666" width="100"/>
			<s:Label text="{data.arealRainfall}" color="0x666666" width="100"/>
			<s:Rect  left="0" right="0" top="0" bottom="0"  width="10" height="10" >
				<s:stroke>
					<s:SolidColorStroke color="0xb9b9b9" weight="1"/>
				</s:stroke>
				<s:fill>
					<s:SolidColor color="{getColorRect(data)}"/>
				</s:fill>
			</s:Rect>
			<s:Label  paddingLeft="5" text="{data.level}" color="0x666666" width="95"/>
		</s:HGroup>
	</s:BorderContainer>
</s:ItemRenderer>

 5.用到的图片:


flex自定义list显示成表格的样式,增加单击事件
 完成。