2012-01-19 12 views
0

の外にスパークリストでのSelectedItemを設定します。Flexは私はずっとこのように、CallOutContentの一部であるスパークリストを持っているIndexChangeEventハンドラ

<s:CalloutButton id="frequencyChanger" label="{frequencyChangeList.selectedItem.label}"> 
    <s:calloutContent> 
     <s:BorderContainer> 
      <s:layout> 
        <s:VerticalLayout/> 
      </s:layout> 
      <s:List id="frequencyChangeList" dataProvider="{Util.getFrequencyList()}" selectedIndex="8" requireSelection="false"       changing="frequencyList_changingEvent(event)"/> 
     </s:BorderContainer> 
    </s:calloutContent> 
</s:CalloutButton> 

のdataProviderは、次のような構造のいくつかの項目を持つArrayListのです:

public class ListItem 
{ 
    public var label:String; 
    public var item:Object; 

    public function PeriodFrequencyListItem(label:String, item:Object) { 
     this.label=label; 
     this.item=item; 
    } 
} 

itemオブジェクトは列挙型です。 これは、Listに表示される対応するラベルにEnumを一致させるための背景です。私は辞書を使っていただろうが、リストはこれを(不幸にも)働かない。

とにかく、IndexChangeEventメソッドでは、selectedItemを現在選択されているものに設定できます。 frequencyChangeList.selectedItem = event.currentTarget.selectedItem;

私はできません(ただし、クラスの別の部分では必然的に必要です)は、IndexChangeEventメソッドの外でリストのselectedItemを設定することです。 次のような項目を設定しようとすると、NULLポインタ例外がスローされませんでした。

私はCallOutButtonのラベルを設定できますが、これはリストの選択を変更しません。 それで、自分の「変更中」メソッドの外にリスト内のアイテムを選択するトリックはどこですか?

ご協力いただければ幸いです。 乾杯!

+0

は本当に誰もがリスト内の項目を設定する方法を知っているんでしょうか? – AlBirdie

答えて

0

あなたはこれをやってみました:

myList.selectedIndex = indexOfArray; 

はこちらを参照してください。

How do I make sure that there is always something selected in a Spark List?

+0

ナア、私はそれをしばらく前に分かった。問題は、コールアウトが呼び出されるまでリストが実際に存在しないことです。問題を解決するために私がしたのは、回避策のようなものです。自分のカスタム吹き出しボタンを作成してプロパティを追加した後、囲まれたリストはselectedIndexを単に吹き出しボタンに設定されたプロパティに設定します。 – AlBirdie

関連する問題