アイテムが常に選択されていることを確認し、GUIに表示されるようにするためにスパークリストに問題があります。アイテムが削除されたときにスパークリストに選択項目が表示されない
アプリケーション(以下の完全なコード)は、リスト、ラベル、ボタンを作成します。ラベルには、リストで選択されているものが表示されます。ボタンは選択した項目を削除します。選択を変更すると、ラベル内のテキストが更新されます。 重要::アイテムが常に選択されるように、リストには「requireSelection」がtrueに設定されています。
リストの最初の項目を選択すると、その項目がラベルに正しく反映されます。 「削除」をクリックすると項目が削除され、次の項目が選択されます。これはすべて正しく動作しています。
最初の項目以外を選択して[削除]をクリックすると、選択肢がないようにリストが表示されます。ただし、ラベルは最初の項目が選択されていることを示します。アイテム1を選択しようとすると(クリックすると)、何も表示されません(アイテムが選択されていないと表示されます)。他のアイテムをクリックすると、正しく選択され、リストが再び動作を開始するように見えます。
ヘルプ。これはバグですか、手動でリストをキックする必要がありますか?選択を強制するために "requireSelection"を使用する必要がありますか?
おかげで、いくつかの理由
フィル
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
initialize="init()">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
private function init():void {
myList.addEventListener(FlexEvent.VALUE_COMMIT, updateSelectionLabel);
var ac:ArrayCollection = new ArrayCollection()
ac.addItem("Adam");
ac.addItem("Bob");
ac.addItem("Charlie");
ac.addItem("Dave");
myList.dataProvider = ac;
}
private function updateSelectionLabel(event:Event):void {
selectedItemLabel.text = myList.selectedItem.toString();
}
protected function removeClicked(event:MouseEvent):void {
myList.dataProvider.removeItemAt(myList.selectedIndex);
}
]]>
</fx:Script>
<s:List id="myList" x="10" y="10" width="300" height="120"
requireSelection="true"/>
<s:Label x="10" y="140" id="selectedItemLabel" text="-selectedItem-"/>
<s:Button x="10" y="160" label="Remove Selected Item" click="removeClicked(event)"/>
</s:Application>
ブリリアント - それは治療を働いた。本当にありがとうございました。 – Phil
私は自分のコードスニペットを更新しました。これまでのコードでは、リストの最初のアイテムが常に削除されていました。更新されたコードは、現在選択されている項目を削除します。申し訳ありません。 –