【发布时间】:2017-12-06 16:31:48
【问题描述】:
我有一个项目列表,当项目被拖动时,它可以被拖放到另一个项目列表视图中的项目上。
我已经有了被拖动项目的 id,我需要以某种方式确定项目被拖放到列表视图中的哪个项目,以便我可以从适配器中获取该位置的对象。
这是我目前的尝试:
@Override
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()){
case DragEvent.ACTION_DROP:{
ClipData data = event.getClipData();
View droppedView = (View) event.getLocalState();
Integer position = listView.getPositionForView(droppedView);
Toast.makeText(getContext(), "ID: " + data.getItemAt(0).getText() + " Pos " + position, Toast.LENGTH_LONG).show();
}
}
return true;
}
不幸的是,这不起作用,因为 event.getLocalState() 返回最初被拖动的视图,而不是被拖动到的视图。
视图 v 似乎是整个应用的 FrameLayout,因此也没有用处。
我认为 DragEvent 中可能有一些我丢失的数据,或者不支持拖放以将项目拖放到列表视图上?
我认为问题的一部分是片段本身正在捕获拖动,但它没有将其传递到列表视图项,如果有某种方式将拖动传递到子视图,它可能会起作用。
【问题讨论】:
标签: android listview drag-and-drop