0

正常に機能する簡単なテスト例があります。ドラッグアンドドロップのプロパティを次のようにtrueに設定します。<s:List dragMoveEnabled="true" dragEnabled="true" dropEnabled="true">

動作するテストアプリケーションと実際のアプリケーションとの違いは、実際のアプリのレイアウトがより複雑であり(ViewStacksとGroupsを使用しています)、dataProviderです。すべての場合でArrayCollectionを使用しますが、実際のアプリにはいくつかのSearchResultsオブジェクトがあります(これらは動的オブジェクトではありません)。

ドラッグアニメーションがありますが、ドロップすると、代わりにマウスの下のアイテムが選択されます。dragMoveEnabledを設定しないと、アイテムはどういうわけかコピーされますが、その場所にオブジェクトが表示されます。

//実例

<s:List dragMoveEnabled="true" dragEnabled="true" dropEnabled="true">
        <s:dataProvider>
            <s:ArrayCollection>
                <fx:Object label="Item 1" data="1" />
                <fx:Object label="Item 2" data="2" />
                <fx:Object label="Item 3" data="3" />
            </s:ArrayCollection>
        </s:dataProvider>
    </s:List>

これは私のアプリケーションからのものであり、機能していません

<s:List id="favSavedSearchesList" width="100%" height="100%"  
        contentBackgroundColor="#dfe4ea"  
        change="favSavedSearchesList_changeHandler(event)"
        itemRenderer="generic_components.RemoveItemRenderer"
        dragMoveEnabled="true" dragEnabled="true" dropEnabled="true"/>

更新:いくつかのテストを行い、dataProviderを文字列のArrayCollectionに置き換えて機能したので、アプリケーションの複雑なレイアウトを除外してプロバイダーを確認できるようになりました

4

1 に答える 1

1

リストのドロップハンドラーをデバッグして問題を見つけました。この問題は、dataProviderに並べ替えが設定されていることが原因で発生しました。ArrayCollectionまたはdataProviderの作成に使用された配列を並べ替えた場合、dragMoveは無視されます。

2番目の問題は、配列がsqliteデータベースから読み取って取得されたものであり、コードまたはSQLクエリで配列を設定しなかったため、ソートが予期しないものでした。

于 2012-05-18T14:50:33.533 に答える