※パート2を追加(10/13/2013)しました
■警告
■対処前ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?xml version="1.0" encoding="utf-8"?> <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" title="Normal"> <s:List width="100%" height="100%"> <s:dataProvider> <s:ArrayList> <fx:Object firstName="Taro" lastName="Sato"/> <fx:Object firstName="Toshi" lastName="Takeda"/> <fx:Object firstName="Miku" lastName="Kishi"/> <fx:Object firstName="Ai" lastName="Ito"/> </s:ArrayList> </s:dataProvider> <s:itemRenderer> <fx:Component> <s:ItemRenderer> <s:HGroup> <s:Label text="{data.firstName}"/> <s:Label text="{data.lastName}"/> </s:HGroup> </s:ItemRenderer> </fx:Component> </s:itemRenderer> </s:List> </s:View> |
一見、ソースを見る限り問題無さそうなのですが、データバインディングがうまくいっていないため警告がでます。
対処方法: ItemRendererの「set data」functionをoverrideしてやることで対処します。
■対処後ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <?xml version="1.0" encoding="utf-8"?> <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" title="Normal"> <s:List width="100%" height="100%"> <s:dataProvider> <s:ArrayList> <fx:Object firstName="Taro" lastName="Sato"/> <fx:Object firstName="Toshi" lastName="Takeda"/> <fx:Object firstName="Miku" lastName="Kishi"/> <fx:Object firstName="Ai" lastName="Ito"/> </s:ArrayList> </s:dataProvider> <s:itemRenderer> <fx:Component> <s:ItemRenderer> <fx:Script> <![CDATA[ override public function set data(value:Object):void { lblFirstName.text = value.firstName; lblLastName.text = value.lastName; } ]]> </fx:Script> <s:HGroup> <s:Label id="lblFirstName"/> <s:Label id="lblLastName"/> </s:HGroup> </s:ItemRenderer> </fx:Component> </s:itemRenderer> </s:List> </s:View> |
これで警告が消えました。イェーイ!
http://flexponential.com/2009/11/11/binding-warnings-when-using-object-in-a-list-dataprovider/
0 件のコメント:
コメントを投稿