我正在设计一个拖放操作,但我不知道如何访问我的数据。有没有人使用Clip Data对象?这是我的代码:
开始拖放:
ClipData dragData= ClipData.newPlainText("my", "test") );
v.startDrag(dragData,
new MyDragShadowBuilder(v),
v, 0);
倾听事件:
case DragEvent.ACTION_DROP:{
if (event.getClipDescription().getLabel().equals("my"))
Log.d("myLog","Data:"+event.getClipData()+" "+event.getClipData().getItemCount());
答案 0 :(得分:22)
不是每个拖动事件都可以获取剪辑数据,但其中一些,如ACTION_DROP类型
dropableCanvas.setOnDragListener(new OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
return true;
case DragEvent.ACTION_DROP:
ClipData clipData = event.getClipData();
//...
return true;
default:
return false;
}
}
答案 1 :(得分:3)
在开始拖动之前,请使用以下代码设置一些剪辑数据
ClipData.Item item = new ClipData.Item((CharSequence) v.getTag());
String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN};
ClipData dragData = new ClipData(v.getTag().toString(), mimeTypes, item);
然后在事件v.startDrag(......);
中开始使用DragEvent.ACTION_DROP
进行拖动后,您必须使用以下代码捕获剪辑数据
String clipData = event.getClipDescription().getLabel().toString()
一旦你拥有了clipData
,你就可以玩了。这并没有让我失望,请在最后检查你。