2

我想通过用手指拖动来重新排序 Flex 移动应用程序中的列表项。

作为第一步,我从 Adob​​e 文档中复制了示例Using drag-and-drop with list-based controls - 虽然他们的示例作为 Web 应用程序运行良好,但在下面的移动应用程序中没有任何反应:

截屏

为什么它不起作用(比如移动主题中缺少一些皮肤?)

有没有办法让它工作(至少重新排序移动列表中的项目)?

下面是我尝试过的简单测试代码 - 只需将其放入 Flash Builder 中的新空白(即没有导航栏)Flex 移动项目中:

<?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" 
               applicationDPI="160"
               creationComplete="initApp()">

    <s:layout>
        <s:VerticalLayout/>
    </s:layout>

    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;

            private function initApp():void {
                srclist.dataProvider = 
                    new ArrayCollection(['Reading', 'Television', 'Movies']);
                destlist.dataProvider = new ArrayCollection([]);
            }
        ]]>
    </fx:Script>

    <s:HGroup>
        <s:VGroup>
            <s:Label text="Available Activities"/>
            <s:List id="srclist" 
                    allowMultipleSelection="true"
                    dragEnabled="true"
                    dragMoveEnabled="true"/>
        </s:VGroup>

        <s:VGroup>
            <s:Label text="Activities I Like"/>
            <s:List id="destlist" 
                    dropEnabled="true"/>
        </s:VGroup>
    </s:HGroup>

    <s:Button id="b1" 
              label="Reset"
              click="initApp();"/>  

</s:Application>
4

1 回答 1

1

我自己在此页面上找到并尝试了一个超级解决方法。

只需从他的示例中复制类并将自定义 itemRenderer 添加到您的源列表中。

        <s:List id="srclist" 
                allowMultipleSelection="true"
                dragEnabled="true"
                dragMoveEnabled="true">
            <s:itemRenderer>
                <fx:Component>
                    <local:DraggableIconItemRenderer decorator="{DragThumb}" />
                </fx:Component>
            </s:itemRenderer>
        </s:List>

向作者致敬!

结果如下:

在此处输入图像描述

于 2013-02-28T00:18:22.823 回答