【実践2】リストの内容を編集する、itemEditor
itemEditorとは、リスト系コントロールのeditableプロパティをtrueに設定した際の、レコードの内容を編集する方法を定義したクラスです。デフォルトでは、TextInputコントロールが割り当てられています。
itemEditorを指定する代わりにrendererIsEditorプロパティをtrueにすることで、itemRendererに指定したコントロールがitemEditorとしても機能するようになります。
また、itemEditorで編集した値を反映するには、editorDataFieldプロパティに、itemEditorが持つ編集後のデータが格納されているプロパティ名を指定する必要があります。itemEditorがCheckBoxであれば“selected”、NumericStepperであれば“value”を指定します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ところが、例えばCheckBoxは初期値がtrueかfalseかによって明示的にCheckBoxの状態を定義しない限り、チェックされない状態でしか表示されません。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
この例を実行すると、設定された初期値がtrueかfalseかにかかわらずチェックボックスは未チェックの状態になってしまいます。
■ itemRendererの状態を完全に定義する
これを回避するためには、dataプロパティに値が渡されたタイミングで、itemRendererの状態を完全に定義する必要があります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
この例では、「checkBoxSelected:Boolean」というプロパティを定義したCheckBoxを包括するBoxを、itemRendererおよびitemEditorに設定しています。
Listからdataが渡されるたびにcheckBoxSelectedの値が変更され、バインディングによってCheckBoxのチェック状態が連動して変更されます。これにより、初期値を正しく表示できます。ListのeditorDataFieldにはcheckBoxSelectedを指定しています。
直接CheckBoxのselectedを指定しない理由は、editorDataFieldの値が、itemEditorの最上位に定義されたプロパティにしかアクセスできないためです。
このあたりの詳細に関しては、「アイテムレンダラーとアイテムエディタのライフサイクルについて」を参照してください。
【応用】リストをカラーピッカーにする
最後に、応用例としてカラーピッカーをitemRendererで実現する方法を紹介します。この例では、レコードのカラーコードをそのまま、色で表現しています。ListではなくTileListを用いると、よりカラーピッカーらしくなります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
■ itemRendererでリストの利用範囲が広がり、直感的に操作できる
冒頭でも述べましたが、itemRendererは応用範囲が非常に広いため、「複数の選択肢から選択させるコントロール」に当たるものであれば、itemRendererによる実装を検討してみるのもいいでしょう。
次回はバリデータとフォーマッターについて解説します。
プロフィール
成瀬 勉(なるせ つとむ)
クラスメソッド株式会社 エンタープライズサービス部門アーキテクト
Macromedia FLASH MX 2004 Developer認定技術者
FlashエンジニアとしてWeb製作を経たのちWebアプリケーション開発に携わる。FlexやWPFなどのRIA開発および技術調査を日々行っている。
クラスメソッド株式会社での主な開発実績は、旭化成の電子ファイリングシステム、ひまわり証券のオンライントレードシステム、ベルシステム24の営業支援システムなど。
ブログ(C:\narun)も更新中。
関連記事
- Flex/AIRの開発環境Flex Builder 3を使ってみよう
現場で使えるFlex実践テクニック(特別編) 今秋に機能確定版がリリース予定のFlex Builder 3。EclipseベースのFlex/AIR開発環境のインストール方法と新機能を紹介 - Eclipseで開発可能になったAdobe Flex 2
リッチクライアント・プロダクトレビュー 今年登場するAdobe Flex 2はEclipseプラグインを開発環境とするリッチクライアントフレームワークに生まれ変わった - Flex2でWebアプリ開発
これまで3週間かかっていたWebアプリのモック開発工程を、3日に短縮できたというFlex2の体験版をダウンロードして簡単アプリを作ってみよう - ・第1回 モックを3日で仕上げるFlex2とは?
- ・第2回 MXMLを理解してFlex 2のUIを定義しよう
- ・第3回 イベントドリブンなアプリケーション構築
- ・第4回 データバインディングでオブジェクト間のデータ受け渡し
- ・最終回 より短いXMLコードでサーバ通信させるFlex2
- Flexのクライアントサイドをオープンソースで制覇する
大規模なWebアプリケーションを大人数で開発するときに便利なFlexのクライアントサイドのフレームワークを紹介 - ・第1回 開発品質を均一化させるCairngormとは?
- ・第2回 Flexのフレームワーク、Cairngormを使ってみよう
- ・第3回 Flexのフレームワーク、Cairngormのアーキテクチャ
- ・第4回 Flexのフレームワーク、Cairngormでサンプルアプリ
- ・最終回 Flexのフレームワーク、Cairngormで検索アプリ完成
- Flashベースのリッチクライアントを体験
XMLタグでFlashベースのユーザーインターフェイスを構築できるMacromedia Flexを6回の連載で体験・評価します - ・第1回 Macromedia Flexのインストール
- ・第2回 Flex開発環境「Flex Builder」のセットアップ
- ・第3回 FlexBuilderで新規アプリの開発に着手しよう
- ・第4回 ドラッグ&ドロップでUIコンポーネントを配置
- ・第5回 Flexならデータ・バインディングもカンタン
- ・最終回 Flexの表現力をActionScriptで強化する
Copyright © ITmedia, Inc. All Rights Reserved.