アイテムレンダラ[Flex]
Flexに詳しい人と話していて、このアイテムレンダラを
使えるかどうかでFlexを理解しているかどうかがわかると
言ってました。
個人的な感覚でいえばとっつきづらいけど、仕組みを理解
してしまえば一気に理解が深まる感じですね。
僕の理解がどこまでのものかはわかりませんが、今回は
データグリッドにチェックボックスを表示するアイテム
レンダラをサンプルにしたいと思います。
ポイント
- アイテムレンダラを定義するクラスを作成
- アイテムレンダラを作りたいコンポーネントを継承する。(今回はCheckBox)
- プロパティを設定する
- IFactoryクラスを作成する
- newInstance()メソッドの戻り値に上記の定義したアイテムレンダラを設定する。
サンプル
//アイテムレンダラの定義 //CheckBoxRenderer.as import mx.controls.CheckBox; import mx.controls.dataGridClasses.DataGridListData; public class CheckBoxRenderer extends CheckBox { public function CheckBoxRenderer() { super(); } override public function set data(dto:Object):void { super.data = dto; //データフィールドの値をselectedプロパティにセット var colData : DataGridListData = DataGridListData(listData); selected = super.data[colData.dataField]; } } //IFactory //CheckBoxRendererFactory.as import mx.core.IFactory; public class CheckBoxRendererFactory implements IFactory { public function CheckBoxRendererFactory() { } public function newInstance() : * { var itemRenderer : CheckBoxRenderer = new CheckBoxRenderer(); return itemRenderer; } }
<!-- DataGridへの設定 ※MXMLは適当に端折ります --> <!-- DataGridSample.mxml --> xmlnsにCheckBoxRendererFactoryを呼び出せるようにしておく <!-- newInstance()メソッドを実装したクラスを呼び出す --> <renderer:CheckBoxRendererFactory id="check" /> <!-- DataGridColumnにitemRendererを設定 --> <mx:DataGridColumn id="check" headerText="チェック" dataField="checkBox" textAlign="center" itemRenderer="{check}" />
実行結果
※画像参照(この画像では一行目にselectedの値をtrue、二行目をfalseに設定しています)
dataFieldとかは適当に設定して試してみてください。
ではでは