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