Flex でニュース リストを表示するモバイル アプリケーションを作成しています。
各ニュースにはタイトルと写真があるので、iconItemRenderer を含むリストを使用して結果を表示しています。itemRenderer は常にすべてのアイテムに同じ外観を与えるようです。
しかし、全幅の写真と大きなタイトルで、最初の項目に別の外観を与えたいと思います。私はそれを行う方法がわかりません。
何か案が ?
Flex でニュース リストを表示するモバイル アプリケーションを作成しています。
各ニュースにはタイトルと写真があるので、iconItemRenderer を含むリストを使用して結果を表示しています。itemRenderer は常にすべてのアイテムに同じ外観を与えるようです。
しかし、全幅の写真と大きなタイトルで、最初の項目に別の外観を与えたいと思います。私はそれを行う方法がわかりません。
何か案が ?
カスタムコンポーネントを使用し、いくつかの基本的なメソッドをオーバーライドする必要があります。だから、私はこれをやろうとしましたが、いくつかの問題に直面しました。その問題はフレックス3では修正されていない可能性があります(私はフレックス3を使用しています:-))。だから、これにもかかわらず、私は解決策を見つけました。
import mx.controls.List;
import mx.core.IFactory;
public class ListEx extends List{
public function ListEx(){
super();
}
public var item1stRenderer:IFactory;
public var item1stCount:int=1;
private static var _first:int = 0;
override public function getItemRendererFactory(data:Object):IFactory{
if(_first<=item1stCount && item1stRenderer != null && data != null){
return item1stRenderer;
}else{
return super.getItemRendererFactory(data);
}
}
override public function get itemRenderer():IFactory{
if(_first<=item1stCount && item1stRenderer != null){
_first++;
return item1stRenderer;
}else{
return super.itemRenderer;
}
}
}
そしてそれをテストしましょう!
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" height="100%" width="100%" xmlns:local="*">
<mx:Model id="mystates">
<states>
<state label="Alabama" data="AL"/>
<state label="Alaska" data="AK"/>
<state label="Arizona" data="AZ"/>
<state label="Arkansas" data="AR"/>
<state label="California" data="CA"/>
<state label="Colorado" data="CO"/>
<state label="Connecticut" data="CT"/>
</states>
</mx:Model>
<local:ListEx itemRenderer="mx.controls.TextInput" id="g_list" dataProvider="{mystates.state}" width="100%">
<local:item1stRenderer>
<mx:Component>
<mx:Label color="blue"/>
</mx:Component>
</local:item1stRenderer>
</local:ListEx>
</mx:Application>
願っています、私はあなたを助けることができます。
PS:私の英語でごめんなさい、私はロシア語を話します:)