2011-05-30 14 views
9

देता है मैं ड्रैग और ड्रॉप ऑपरेशन डिज़ाइन कर रहा हूं लेकिन मुझे नहीं पता कि मेरे डेटा तक कैसे पहुंचना है। क्या किसी ने क्लिप डेटा ऑब्जेक्ट्स का अनुभव किया है?एंड्रॉइड ड्रैग एंड ड्रॉप GetClipData हमेशा शून्य

खींचें और ड्रॉप शुरू::

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()); 

उत्तर

21

हर खींचें घटना क्लिप डेटा प्राप्त कर सकते में नहीं है, लेकिन इस तरह के ACTION_DROP प्रकार के रूप में उनमें से कुछ

enter image description here

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

enter image description here

+0

बहुत अच्छा जवाब, +1 और धन्यवाद! – Soham

+0

यदि कोई आश्चर्य करता है कि कौन सी घटनाओं में क्या है, तो आप इसे DragEvent दस्तावेज़ में ढूंढ सकते हैं (पहली तालिका देखें): http://developer.android.com/reference/android/view/DragEvent.html – Pijusn

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(......); के साथ खींचने के बादआप एक बार जब आप clipData आप के आसपास खेल सकते हैं निम्नलिखित कोड

String clipData = event.getClipDescription().getLabel().toString() 

का उपयोग कर क्लिप डेटा को पकड़ने के लिए की है। यह मुझे वापस नहीं लौटा, आपको अपने अंत में जांचें।

+0

इस के लिए धन्यवाद। – CENT1PEDE