自定义List的ItemRenderer常遇到的警告unable to bind to property的解决办法实例

1. MyFlexApp.mxml

<?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">
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
						
			import spark.events.IndexChangeEvent;
			
			//this function is called when the selection is going to change
			private function selectionChangingHandler(evt:IndexChangeEvent):void {
				var item:* = list.dataProvider.getItemAt(evt.newIndex);
				if (item.type != "employee") {
					evt.preventDefault();
				}
			}
		]]>
	</fx:Script>
		
	
	<s:Panel title="Spark List Component Example"
			 width="75%" height="75%"
			 horizontalCenter="0" verticalCenter="0">
		<s:VGroup left="20" right="20" top="20" bottom="20">
			<s:Label width="330"
					 text="Select a name to see employee's phone number. You should not be able to select the first name."/>
			<s:List id="list" changing="selectionChangingHandler(event);"
					itemRenderer="ListItemRenderer" >
				<s:dataProvider>
					<s:ArrayList>
						<fx:Object type="hr" firstName="Ann"  lastName="Green"  />
						<fx:Object type="employee" firstName="Tom"  lastName="Smith" phone="415-155-1212" />
						<fx:Object type="employee" firstName="John" lastName="Black" phone="408-344-1234" />
						<fx:Object type="employee" firstName="Jane" lastName="White" phone="415-235-7878" />
						<fx:Object type="employee" firstName="Bill" lastName="Jones" phone="415-875-7800" />
					</s:ArrayList>
				</s:dataProvider>
			</s:List>
		</s:VGroup>
	</s:Panel>
	
</s:Application>

2. ListItemRenderer.mxml

<?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" >
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import mx.utils.ObjectProxy;
			
			[Bindable]
			private var _employee:ObjectProxy;
			
			override public function set data(value:Object):void
			{
				// TODO Auto Generated method stub
				this._employee = new ObjectProxy(value);
			}
			
			
			
		]]>
	</fx:Script>
	<s:states>
		<s:State name="normal" />
		<s:State name="hovered" />
		<s:State name="selected" />
	</s:states>
	<s:Rect left="0" right="0" top="0" bottom="0">
		<s:fill>
			<s:SolidColor color="0x999999" alpha="0" alpha.hovered="0.2"
						  alpha.selected="0.6" />
		</s:fill>
	</s:Rect>
	<s:Label id="nameLabel" text="{_employee.lastName}, {_employee.firstName}" top="5" left="5" right="5" />
	<s:Label y="20" id="phoneLabel" text="{_employee.phone}" includeIn="selected" top="25" bottom="5" left="5" right="5" />
	
</s:ItemRenderer>

3.employeeVO.as

package
{
	[Bindable]
	public class employeeVO
	{
		public var type:String;
		public var firstName:String;
		public var lastName:String;
		public var phone:String;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值