android - 拖放到开始拖放后正在加载的项目上

标签 android drag-and-drop

我在 Android 上使用拖放时遇到问题。我有 recicleview,当用户点击某个项目时,另一个列表会显示在 recicleview 上方,并且项目开始拖放。之后,第二个 ListView 的项目将加载并显示在屏幕上,并且在 getview 中每个项目都设置 OnDragListener。问题是,在第二个 ListView 中,启动拖放后列表项显示,并且 OnDragListener 不起作用。但如果在启动 DragNDrop 之前添加了项目,OnDragListener 就会起作用。有谁知道如何解决这个问题吗?

最佳答案

好的,我解决了这个问题。由于我使用 CustomListView,因此我在 CustomListView 内部创建了 isOnChild 方法。当我收到事件丢弃时,我调用此方法并检查所有子项。如果找到 subview ,则会将 DragEvent 传输到该 subview 。如果有人知道另一种解决方案,我很乐意阅读您的变体

public boolean isOnChild(View v, DragEvent event){
    int count = getChildCount();
    int x = (int) event.getX();
    int y = (int) event.getY();
    for(int i = 0; i < count; i++){
        View view = getChildAt(i);
        int left = view.getLeft();
        int right = view.getRight();
        int top = view.getTop();
        int bottom = view.getBottom();
        if(left < x && x < right && bottom > y && y > top){
            view.dispatchDragEvent(event);
            return true;
        }
    }
    return false;
}

关于android - 拖放到开始拖放后正在加载的项目上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30485497/

相关文章:

java - 如何在java中减去hashmap数据

android - 广播接收器在 Android 6.0 Marshmallow 中不起作用

javascript - 如何防止掉入 div 元素?

angular - 如何在Angular Material 7中自定义CSS拖拽,拖拽预览,拖拽占位符?

linux - wx.TextDropTarget 在 Linux 中不工作

angular - ng2-dnd 与 Angular 4

android - 如何获取谷歌地图的屏幕中心位置?

android - 如何在 Android 的 TabLayout 中以编程方式添加选项卡

android - admob 横幅未显示在弹出窗口中

javascript - Jquery 用户界面 : How can I update id on drop event