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"/>

更新:我做了一些测试并用字符串的 ArrayCollection 替换了我的 dataProvider 并且它起作用了,所以我现在可以排除应用程序的复杂布局并查看提供程序

4

1 回答 1

1

我通过调试 List 的 drop 处理程序发现了问题。问题是由于 dataProvider 有一个排序集,如果您对 ArrayCollection 或用于创建 dataProvider 的 Array 进行了排序,则 dragMove 将被忽略。

第二个问题是我的数组是通过从 sqlite 数据库读取获得的,我没有在代码或 SQL 查询中对其进行排序,所以排序对我来说是意料之外的。

于 2012-05-18T14:50:33.533 回答