2017-02-06 9 views
12

मैं एक स्क्रीन है कि कोई Android एप्लिकेशन बना रहा होता है निम्नलिखित:खींचें देखें और यह ड्रॉप RecyclerView आइटम पर Android

  1. रेमंड का मानना ​​है कि botton पर
  2. अलग दृश्य के नीचे व्यक्ति के रूप में श्रेणियों में शामिल है और उपयोगकर्ता सक्षम होना चाहिए यह एक RecyclerView आइटम पर खींचें करने के लिए, और ड्रॉप के बाद उपयोगकर्ता (उदाहरण के लिए आइटम श्रेणी में गिनती)

मैं इस प्रक्रिया को लागू करने के लिए के बारे में कुछ मदद की ज़रूरत है RecyclerView आइटम डेटा पर बदल रहा है दिखाएगारेमंड आइटम में देखें खींचें करने के लिए 10, निम्न चित्र वास्तव में बताते हैं मुझे क्या करना चाहते हैं, लेकिन करने के लिए एक draglistener जोड़कर यह करने के लिए कैसे

enter image description here

किसी भी मदद की बहुत सराहना कर रहा है

उत्तर

7

प्रारंभ पता नहीं है आपके पुनर्नवीनीकरण एडाप्टर के onCreateViewHolder में आपका फुलाया दृश्य।

view.setOnDragListener(new OnDragListener() { 
     @Override 
     public boolean onDrag(View view, DragEvent dragEvent) { 

      switch (dragEvent.getAction()) { 
       case DragEvent.ACTION_DRAG_STARTED: 
        // drag has started, return true to tell that you're listening to the drag 
        return true; 

       case DragEvent.ACTION_DROP: 
        // the dragged item was dropped into this view 
        Category a = items.get(getAdapterPosition()); 
        a.setText("dropped"); 
        notifyItemChanged(getAdapterPosition()); 
        return true; 
       case DragEvent.ACTION_DRAG_ENDED: 
        // the drag has ended 
        return false; 
      } 
      return false; 
     } 
    }); 

ACTION_DROP मामले में आप या तो मॉडल बदल सकते हैं और notifyItemChanged() कॉल करें, या सीधे दृश्य को संशोधित (कि rebinding मामले को संभाल नहीं होगा)। इसके अलावा onCreateViewHolder में अपने View करने के लिए एक longClickListener जोड़ने के लिए, और onLongClick में खींचें शुरू: खींचें के बारे में

ClipData.Item item = new ClipData.Item((CharSequence) view.getTag()); 
    String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN}; 
    ClipData dragData = new ClipData(view.getTag().toString(), 
      mimeTypes, item); 
    view.setVisibility(View.GONE); 
    HeptagonDragShadowBuilder myShadow = new HeptagonDragShadowBuilder(Heptagon.this, 1.1f); 

    if (VERSION.SDK_INT >= VERSION_CODES.N) { 
     view.startDragAndDrop(dragData, myShadow, null, 0); 
    } else { 
     view.startDrag(dragData, myShadow, null, 0); 
    } 

अधिक जानकारी के लिए और ड्रॉप android developers site

+1

धन्यवाद की जाँच बहुत है, यह greate लग रहा है, लेकिन मैं सरल सवाल है एडाप्टर दृश्य स्थिति कैसे प्राप्त करें? धन्यवाद –

+1

'viewholder.getAdapterPosition()' –

+0

के साथ आपका स्वागत है ^^ –

संबंधित मुद्दे