1

Flash Builder 4を使用しており、次の構造を持つwords.xmlという外部XMLファイルがあります。

<wordList>
    <wordRecord>
        <word>duck</word>
        <syllables>1</syllables>
        <firstLetter>d</firstLetter>
        <!--other fields-->
    </wordRecord>
    <wordRecord>
        <word>machete</word>
        <syllables>3</syllables>
        <firstLetter>m</firstLetter>
        <!--other fields-->
    </wordRecord>
    <!--more wordRecords-->
</wordList>

さて、これらは正確なフィールド名やコンテンツではありません。これらは私のクライアント独自のものであり、そのXMLファイルはこれです。しかし、これが基本的な構造です。リスト内の各「wordRecord」の「word」フィールドだけを表示する必要があります。これは、ドラッグアンドドロップやその他の機能で有効になります。

FlashBuilderMXMLファイルの関連部分は次のとおりです。

<fx:Declarations>
    <fx:XML id="wordsXML" source="/xml/words.xml" />
<fx:Declarations>
<s:List id="resultsList">
    <s:dataProvider>
        <s:XMLListCollection id="xmlWords" source="{wordsXML..word}" />
    </s:dataProvider>
</s:List>

ここまでは順調ですね。リストは私のAirアプリケーション、スクロール、その他すべてで問題なく表示され、適切な属性が存在する場合、ドラッグアンドドロップはうまく機能します。

ただし、必要なのは、他のフィールドに従ってリストをフィルタリングし、結果から単語だけを表示できるようにすることです。

ここでは、XMLファイルに多数の「wordRecord」要素が含まれていると仮定します。最終的に「firstLetter」が「m」である「単語」だけを取得するfilterFunctionを作成する必要があります。

Webで見つけたいくつかの例に基づいてfilterFunctionを作成しようとしましたが、XMLListCollectionはフィールドのみであるため、filterFunctionを他のXMLフィールドと連携させることができません。XMLListDeclarationを変更して各「wordRecord」要素をXMLListとして提供しようとしましたが、filterFunctionの結果から「word」のみを表示するようにs:Listを取得する方法がわかりません。

何か案は?前もって感謝します。

4

1 に答える 1

1
<s:List id="resultsList" labelField="word">
    <s:dataProvider>
        <s:XMLListCollection
                id="xmlWords"
                source="{wordsXML..wordRecord}"
                />
    </s:dataProvider>
</s:List> 

このようにして、フィルター関数の「wordRecord」オブジェクトを作成します。

于 2012-04-19T06:46:39.273 に答える