以前、ItemRenderer, LabelItemRenderer, IconItemRendererについて説明しました。これで標準的なことはほとんど出来るはずですが、やっぱり自分で自由にコンポーネントを配置したり、表示方法を変えたいですよね。なので、今回、ItemRendererのカスタム方法を紹介します。
■メインソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?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="Custom" xmlns:myclasses="myclasses.*"> <s:List width="100%" height="100%" itemRenderer="views.itemrenderers.CustomItemRenderer"> <s:dataProvider> <s:ArrayList> <myclasses:Person firstName="Taro" lastName="Sato" faceIcon="@Embed('assets/images/face1.png')"/> <myclasses:Person firstName="Toshi" lastName="Takeda" faceIcon="@Embed('assets/images/face2.png')"/> <myclasses:Person firstName="Miku" lastName="Kishi" faceIcon="@Embed('assets/images/face3.png')"/> <myclasses:Person firstName="Ai" lastName="Ito" faceIcon="@Embed('assets/images/face4.png')"/> </s:ArrayList> </s:dataProvider> </s:List> </s:View> |
■カスタムItemRendererソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?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"> <s:layout> <s:HorizontalLayout verticalAlign="middle" paddingLeft="5" paddingRight="5" paddingTop="5" paddingBottom="5" /> </s:layout> <s:BitmapImage source="{data.faceIcon}" /> <s:Label text="{data.firstName}" width="100%" maxDisplayedLines="1" showTruncationTip="true" /> <s:Label text="{data.lastName}" width="100%"/> </s:ItemRenderer> |
メイン側のListコンポーネントのItemRendererプロパティにカスタムItemRendererのパスを設定します。
カスタムItemRenderer側に自由にLabelやBitmapImageなどを配置・設定できます。
あ、データバインディングの警告を回避するための自前クラス作成と[Bindable]の設定をお忘れなく。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package myclasses { public class Person extends Object { [Bindable] public var firstName:String; [Bindable] public var lastName:String; [Bindable] public var faceIcon:Class; } } |
0 件のコメント:
コメントを投稿