>我有一个简单的测试示例,可以正常工作,我将拖放属性设置为 true,如下所示:<s:List dragMoveEnabled="true" dragEnabled="true" dropEnabled="true">
与工作的测试应用程序和我的真实应用程序的区别在于,实际应用程序上的布局更复杂(我使用的是 ViewStack 和 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,它工作了,所以我现在可以排除应用程序的复杂布局并查看提供程序
我通过调试列表的删除处理程序发现了问题。该问题是由数据提供程序具有排序集的事实引起的,如果您已对用于创建数据提供程序的 ArrayCollection 或数组进行了排序,则忽略 dragMove。
第二个问题是我的数组是通过从 sqlite 数据库中读取获得的,我没有在代码或 SQL 查询中对其设置排序,因此排序对我来说是出乎意料的。