DragNDrop在启动dragndrop后加载的项目上

时间:2015-05-27 14:29:34

标签: android drag-and-drop

我对android上的dragndrop有问题。我有recicleview,当用户点击某个项目时,另一个列表显示上面的recicleview,项目开始dragndrop。之后,第二个listview的项目正在加载并显示在屏幕上,而在getview中,每个项目都设置为OnDragListener。问题是,在启动dragndrop后显示的第二个列表视图列表项中,OnDragListener不起作用。但是OnDragListener可以在启动DragNDrop之前添加项目。有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

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

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;
}