あいまいなタイトルで申し訳ありません。短い言葉でそれを表現するより良い方法は思いつきませんでした。
基本的に、カスタム ItemRenderer (IR) を作成しています。IR には、左側にラベル、右側にアイコンがあります。右側のアイコンは動的です (追加アイコンまたは削除アイコンの場合もあれば、何もない場合もあります)。これは美しく機能し、必要な制御を提供してくれます。
さて、問題は、モバイル アプリケーションでリストをスクロールすると、アイコンが変わることです。
どのように見えるか:
Test3 をドラッグして指 (またはエミュレーターではマウス) を使用してスクロールした後の外観:
ご覧のとおり、アイコンは変わりますが、ラベルは変わりません。dragEnabled
Spark List コンポーネントで、、、dropEnabled
およびすべてがdragMoveEnabled
false に設定されています。アイコンの選択が実行されるのは on だけcreationComplete
なので、ある時点で別のアイコンを選択する方法はありません。この変更が発生した後、データ自体が本来あるべき状態であることも確認できます。
アイテムを作成する MXML は次のとおりです。
<s:HGroup width="100%" verticalAlign="middle" left="{this.sideSpacing}" right="{this.sideSpacing}" top="{this.sideSpacing}" bottom="{this.sideSpacing}">
<s:Label id="text" width="100%"/>
<s:Image id="actionIcon" buttonMode="true" click="actionIconClick( event );">
<s:filters>
<s:DropShadowFilter alpha=".45" angle="90" distance="3" blurX="3" blurY="3" quality="3"/>
</s:filters>
</s:Image>
</s:HGroup>
<s:Rect width="100%" height="1" bottom="0" alpha=".1">
<s:fill>
<s:SolidColor color="#000000"/>
</s:fill>
</s:Rect>
そして、どのアイコンを表示するかを選択するための、おそらく過度に精巧な AS3:
private function creationComplete( e:Event ):void {
if ( this.data.actionIcon != null ) {
this.actionIconType = this.data.actionIcon;
if ( this.data.actionIcon == ACTION_ICON_ADD ) {
this.actionIcon.source = this.addBitmapSource;
}
else if ( this.data.actionIcon == ACTION_ICON_REMOVE ) {
this.actionIcon.source = this.removeBitmapSource;
}
else {
this.actionIcon.source = null;
this.actionIcon.visible = false;
this.actionIcon.includeInLayout = false;
}
}
else {
this.actionIcon.source = null;
this.actionIcon.visible = false;
this.actionIcon.includeInLayout = false;
}
}
この問題の原因は何ですか?