2016-03-31 8 views
5

मैं एक क्षैतिज RecyclerView के लिए व्यूपेगर जैसी व्यवहार को लागू करने का प्रयास कर रहा हूं। एडाप्टर से डेटा को सामान्य के रूप में फुलाया जाना चाहिए और बाध्य होना चाहिए, लेकिन Recycler के माध्यम से नेविगेशन को अलग-अलग संभाला जाना चाहिए। जब उपयोगकर्ता स्वाइप करता है (या स्क्रॉल करने का प्रयास करता है), तो मैं उस दिशा में Recycler एक आइटम को ले जाता हूं, इसे बाईं तरफ चिपकाता हूं।रीसाइक्लर में पेजर-जैसा व्यवहार

मेरे पास पहले से ही सभी आइटम संक्रमण तर्क है। मैं कस्टम LayoutManager का उपयोग कर रहा हूं, जो कस्टम LinearSmoothScroller() के साथ onSmoothScrollToPosition() ओवरराइड करता है जो आइटम को बाएं स्टिकिंग करता है।

सवाल यह है कि - मैं स्वाइप को रोकने और उन्हें स्वयं संभालने के लिए RecyclerView के स्क्रॉलिंग व्यवहार को ओवरराइड कैसे कर सकता हूं? मैंने LayoutManager में स्क्रॉलिंग को अक्षम करने और फिर onTouchListener में इशारा को अवरुद्ध करने का प्रयास किया, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है। क्या RecyclerView ढांचे के पास इसे संभालने का एक साफ तरीका है?

+0

मैं पहले से ही चाल करना चाहिए 'onTouchListener' में इशारा में अवरोध उत्पन्न कर लगता है। उस समाधान के बारे में क्या काम नहीं कर रहा है? – EpicPandaForce

+0

ठीक है, यह किसी कारण से कुछ भी रोक नहीं करता है। मुझे लगता है कि यह इस तथ्य के कारण हो सकता है कि क्षैतिज पुनर्चक्रण एक बड़े पेजर (ऐप के अनुभागों के लिए टुकड़ा पेजर) के एक पृष्ठ में है और यह केवल शीर्ष पेजर पर इशारा पास करता है :( – Kelevandos

+0

@EpicPandaForce मैं इसे प्राप्त करने में कामयाब रहा काम करने के लिए, मुझे पता चला कि मुझे सरलफाइलर लिस्टनर में सिंपल() पर लागू करना था, न केवल ऑनलिंग() पर। हालांकि, इसके साथ एक समस्या भी है - ऑनस्कोल() विधि कई बार ट्रिगर करेगी, जिसके परिणामस्वरूप रीसाइक्लिंग सभी के माध्यम से जा रहा है एक बार में आइटम। इस पैटर्न को संभालने के लिए कोई पैटर्न? – Kelevandos

उत्तर

0

अपने RecyclerView सेट के LayoutManager

को

final StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.HORIZONTAL); mRecyclerView.setLayoutManager(layoutManager);

+0

और यह कैसे मदद करेगा? – Kelevandos

+0

@ केवलैंडोस वाईएसक्रॉल का पता लगाने के लिए कस्टम स्क्रॉलव्यू का उपयोग करें। [संदर्भ] (http: // stackoverflow।कॉम/प्रश्न/2646028/एंड्रॉइड-क्षैतिज स्क्रॉलव्यू-इन-स्क्रॉलव्यू-टच-हैंडलिंग) – Aks4125

+0

आपका मतलब रीसाइक्लर व्यू के लिए स्क्रोलव्यू रैपर है? यह काम कर सकता है, लेकिन मुझे उम्मीद है कि रीसाइक्लर व्यू फ्रेमवर्क का उपयोग करके इसे साफ तरीके से संभालने का एक तरीका है :-( – Kelevandos

2

वहाँ वास्तव में इस के लिए एक पुस्तकालय layoutmanagers है।

जो आपको चाहिए वह ViewPagerLayoutManager है। यह आपके विचार से पहले जैसा ही है, लेकिन अधिक विस्तारित है और कई मामलों को संभालता है। यह मूल रूप से तब तक स्क्रॉल करता है जब तक पृष्ठ & स्थिति में कोई परिवर्तन नहीं होता है, फिर सही पृष्ठ पर ले जाता है और समायोजित करता है।

इसका इस्तेमाल करने के लिए आप सिर्फ एक सामान्य लेआउट प्रबंधक के रूप में यह निर्धारित करने की आवश्यकता:

recyclerView.setLayoutManager(new ViewPagerLayoutManager(getActivity())); 

अधिक जानकारी के लिए और उदाहरण जाँच here

+0

यह काम करता है, लेकिन यह रीसाइक्लर को पेजर की तरह 100% काम करने के लिए मजबूर करता है, जिसका अर्थ है कि एक समय में एक बच्चा दिखाई देता है। यह वही नहीं है जो मैं चाहता हूं :-( – Kelevandos

+0

यदि आप एकाधिक देखना या स्वाइप करना चाहते हैं तो आप बस एक और उपयोग कर सकते हैं उदाहरण के लिए तत्व स्नैपरलाइनर LayoutManager – djodjo

+1

पूरी तरह से काम करता है –

1

देशी Android this पोस्ट में कवर समाधान एक सुपर आसान तरीका था ViewPager की तरह व्यवहार करने के लिए RecyclerView प्राप्त करने के लिए।

प्रासंगिक बिट्स:

समर्थन पुस्तकालय की 24.2.0 संस्करण दो नए वर्गों (SnapHelper और LinearSnapHelper) है कि एक RecyclerView में तड़क को संभालने के लिए इस्तेमाल किया जाना चाहिए की शुरुआत की। .... केवल कोड की जरूरत है:

SnapHelper snapHelper = new LinearSnapHelper(); snapHelper.attachToRecyclerView(recyclerView);

SnapHelper snapHelper = new GravitySnapHelper(Gravity.START); snapHelper.attachToRecyclerView(startRecyclerView);

+1

कृपया अपने लिंक में अपने लिंक किए गए पृष्ठ का प्रासंगिक हिस्सा शामिल करें। केवल एक लिंक का जवाब उपयोगकर्ता के अनुकूल नहीं है, और अगर लिंक मर जाता है तो पूरी तरह बेकार हो जाता है! – Benjamin

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