android - 拖放 GridView,它允许将项目添加到现有项目以及重新排序

标签 android android-listview drag-and-drop android-gridview

我正在写一个启动器。

它有一个包含应用程序和应用程序文件夹的 GridView。

我希望能够对 GridView 重新排序...这是简单的部分,因为我在下面查看的库提供重新排序:

https://github.com/askerov/DynamicGrid

https://github.com/mrKlar/PagedDragDropGrid

但是,我还希望能够将我正在拖动的项目添加到文件夹中,这与 Google Now Launcher 的工作方式完全相同。该机制是,在您长按一个应用程序开始拖放之后,如果您将鼠标悬停在另一个项目上,它将允许您将其添加到文件夹(如果它是一个文件夹)或创建一个文件夹(如果它是一个应用程序)。如果您将鼠标悬停在项目的边缘附近,它会重新排序而不是将其添加到项目中。

我不想从头开始写这篇文章,但一直无法找到任何拖放 GridView(或 ListView)以及重新排序和添加的示例。

有没有人有库、一些示例代码或关于如何做的粗略想法?

最佳答案

你真幸运,我也在写一个启动器!

您可以为所有图标做的是 setOnDragListener(new Yourclass())

Yourclass 中,您可以:

class Yourclass implements View.OnDragListener{

    @Override
    public boolean onDrag(View v, DragEvent event) {
        final int action = event.getAction();
        switch (action) {
            case DragEvent.ACTION_DRAG_STARTED:
                // do nothing
                break;
            case DragEvent.ACTION_DRAG_ENTERED:
                //Code for folder

            case DragEvent.ACTION_DROP:
                if (event.getAction()==DragEvent.ACTION_DROP) {
                    //save folder?
                }
                return true;
            case DragEvent.ACTION_DRAG_ENDED:
                //do nothing
            default:
                break;
        }
        return true;
    }
}

确保 Yourclass 与 longclicklistener 在同一个文件中

但是,我自己编写了所有启动器代码,因此这可能不适用于您的库。

关于android - 拖放 GridView,它允许将项目添加到现有项目以及重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25233081/

相关文章:

android - Listview 添加到同一行

objective-c - "Drag ' n ' Drop"游戏动画

java - 使用数据库中的数据创建自定义 ListView

java - ListView 未填充,但调用了 getView()

android - 列表项点击检查android中listview中放置的检查

ios - 没有调用 UIDropInteractionDelegate performDrop?

android - 如何在android中的两个列表之间实现拖放项目?

android - ListView NullpointerException 问题

java - 将第三个 Android Activity 的结果返回给第一个 Activity

android - LinearLayout 水平在真实设备上显示不正确