2017-03-03 6 views
14

मेरे पास RecyclerView है ItemTouchHelper के साथ। RecyclerView एक 2/2 ग्रिड है और इसमें पृष्ठ पर एक शीर्षलेख और पाद लेख है। जब उपयोगकर्ता किसी आइटम को उठाता है तो मैं चाहता हूं कि वह आइटम पाद लेख पर होवर करने में सक्षम हो। हालांकि, मैं नहीं चाहता कि पुनर्नवीनीकरण में अन्य आइटम पाद लेख के माध्यम से देखा जा सके।आइटम टचहेल्पर ड्रैग किए गए आइटम को टुकड़े टुकड़े पर जाएं

तो पहले मैंने clipChildren और clipPadding जोड़ने की कोशिश की लेकिन इसने एक ऐसी स्थिति बनाई जहां रीसाइक्लर व्यू आइटम फूटर के माध्यम से स्क्रॉल कर रहे थे जो एक समस्या थी। मैंने आइटम में ऊंचाई जोड़ने और टॉफॉन्ट लाने की कोशिश की लेकिन उन लोगों ने कभी काम नहीं किया क्योंकि रीसाइक्लर व्यू अभी भी पाद लेख के पीछे था, मैंने रीसाइक्लिंग दृश्य को सामने लाने की कोशिश की लेकिन फिर एक बार फिर सभी आइटम फिर से पाद लेख के सामने बन गए सिर्फ खींचा गया है, क्या किसी को इसका समाधान करने के बारे में कोई अन्य विचार है?

उत्तर

0

सुझाव, मेरे कस्टम TouchHelperCallback में मैंने onMove विधि को ओवरराइड किया और जांच की अनदेखी की कि क्या चर स्रोत और प्रकार समान हैं। तो जब मैं हेडर पर आइटम खींच रहा था, तो मैं उस पर आइटम डाल सकता था।

@Override 
    public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) { 
     //if (source.getItemViewType() != target.getItemViewType()) { 
     // return false; 
     //} 

     // Notify the adapter of the move 
     mAdapter.onItemMove(source.getAdapterPosition(), target.getAdapterPosition()); 
     return true; 
    } 

नहीं बदला गया खींचें गिरावट के बारे में ट्यूटोरियल मैं से ले लिया: https://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf#.jl59rui0l

+0

मैं थोड़ी उलझन में हूं, मैं बिल्कुल उपयोग कर रहा हूं? मैं ड्रैगिंग का उपयोग कर रहा हूं लेकिन मैं आइटम की स्थिति नहीं ले रहा हूं। तो मेरा ऑनमोव सिर्फ झूठा लौटाता है। रीसाइक्लिंगव्यू में मौजूद वस्तुओं पर रीसाइक्लिंगव्यू से चलती वस्तुओं के साथ आपका कोड क्यों मदद करता है? –

+0

क्षमा करें, आपकी समस्या पर्याप्त निर्दिष्ट नहीं थी। – deadfish

+0

आपकी प्रतिक्रिया के लिए धन्यवाद मैं अपनी समस्या को बेहतर तरीके से कैसे निर्दिष्ट कर सकता हूं? क्या आप इसे समझते हैं? शायद कम जवाब गणना का कारण यही है? –

1

मुझे यकीन है कि अपने recycler दृश्य android:clipChildren="false" है बनाकर शुरू होगा। इस तरह आपको पाद लेख द्वारा शाब्दिक रूप से ओवरलैप करने के लिए रीसाइक्लर्विव की आवश्यकता नहीं होनी चाहिए - यह पाद लेख के ऊपर समाप्त हो सकती है और अभी भी इसके बच्चों को सीमाओं के बाहर खींचने की अनुमति दे सकती है।

यदि आपके पास एक स्थिर पाद लेख है तो आप bringToFront पर कॉल करने का प्रयास कर सकते हैं जब आप निर्धारित करते हैं कि वाई अक्ष इतनी दूर चली गई है कि आपका वर्तमान आइटम पाद लेख को छेड़छाड़ करता है। फिर जब आप सीमा से बाहर निकलते हैं या जब रीसाइक्लिंगव्यू स्क्रॉल करता है, तो पाद लेख को सामने लाएं। हालांकि यह विशेष रूप से त्रुटि प्रवण होगा; एक हैक का एक बिट।

संपादित करें:

एक अलग दृष्टिकोण पूरी तरह से एक घसीटा आइटम और recyclerview (इस ड्रॉप ओर से काम का एक सा ले जाएगा) के बीच संबंध तोड़ होगा, कदम मोटे तौर पर होगा:

- Start dragging item i 
- store a reference to i.getParent() and the view index within its parent 
- i.getParent().removeView(i) //detach the item from the recycler (or create clone) 
- layout.addView(i) //add item onto main layout containing footer, allowing overlap 

- when dropped, use the parent reference and index to reattach the item 
- then work out where the item was released 
+0

आपके उत्तर के लिए धन्यवाद, मेरे पास clipchildren = false है। समस्या यह है कि, मैं चाहता हूं कि केवल चलने वाला बच्चा पाद लेख पर हो, मैं नहीं चाहता कि जब मैं स्क्रॉल करता हूं तो बच्चों को रीसाइक्लर स्क्रॉल करें, जैसे कि वे फूटर –

+0

पर जाएं, क्योंकि एकमात्र कॉलिंग सामने आती है जब आइटम होता है पाद लेख पर घूमते हुए, क्या आप उस आइटम पर सामने आने के लिए कॉल करते हैं या पूरे रीसाइक्लिंग व्यू पर सामने आते हैं? पुनर्नवीनीकरण पर ऐसा करने में समस्या यह है कि पाद लेख के नीचे की अन्य चीजें अचानक इसके सामने कूदती हैं, केवल चलती वस्तु को करने में समस्या यह है कि कॉलिंग के बाद भी सामने आने के बाद भी यह पाद लेख के पीछे रहता है recyclerview खुद –

+0

के पीछे है हां, मैं प्रश्न से उन सभी बिंदुओं को समझ गया था - मुझे लगता है कि आपके पास केवल एक आइटम का आकार छोटा शॉर्टर है, ताकि जब आप रीसाइक्लर व्यू पर लाने के लिए कॉल करें तो फूटर पर कोई आइटम नहीं होगा क्योंकि केवल ड्रैग किए गए दृश्य में एक वाई-स्थिति होगी जो पाद लेख को क्लिप करेगी। यह एक नाजुक समाधान है हालांकि –

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