2015-11-21 10 views
8

मैं अपने ऐप प्रोजेक्ट में रीसाइक्लिंग व्यू का उपयोग कर रहा हूं और ऑनक्लिक लिस्टेनर्स को उनके व्यूहोल्डर्स के साथ सेट कर रहा हूं (उनके रचनाकारों में जैसे स्टैक ओवरव्लो Q&A में उल्लिखित)।जब वे डिस्पोजेड होते हैं तो मैं ReClerView के ViewHolders से OnClickListeners को कैसे हटा सकता हूं?

तब मेरे पास यह प्रश्न है: जब वे डिस्पोजेड होते हैं तो मैं ReClerView के ViewHolders से OnClickListeners को कैसे हटा सकता हूं।

आमतौर पर, हम ऐसा करने से एक OnClickListener निकाल सकते हैं:

view.setOnClickListener(null); 

और अगर यह एक ViewPager के PagerAdapter है, हम destroyItem विधि में ऐसा कर सकते हैं।

@Override 
public void destroyItem(ViewGroup container, int position, Object object) { 
    View view = container.findViewById(R.id.viewId); 
    view.setOnClickListener(null); 
} 

मैं पुनर्चक्रण दृश्य के साथ ऐसा कहां कर सकता हूं? - या, मुझे ऐसा करने की ज़रूरत नहीं है?

+1

मैं डॉन की स्थापना (छवि दृश्य, पाठ विचारों आदि .. समाशोधन), जबकि रीसाइक्लिंग के कारण आसान स्क्रॉलिंग का लाभ मिल रहा है, यह देखा गया पुनर्स्थापित करने के लिए देव की जिम्मेदारी है ऐसा नहीं लगता कि आपको क्लिक श्रोता को शून्य पर सेट करने की आवश्यकता है। जब दृश्य का निपटारा किया जाता है तो कॉलबैक कचरा कलेक्टर द्वारा उठाया जाना चाहिए। इसके अलावा, अगर हमें ऐसा करने की उम्मीद थी, तो मुझे एक ओपनक्लिकलिस्टर विधि मौजूद होने की उम्मीद होगी। – cYrixmorten

उत्तर

14

का उपयोग आप onCLickListener() RecyclerView.Adapter के विचारों का सेट अशक्त करने के लिए जब दृश्य स्क्रीन बंद हो जाता है चाहते हैं, आप कर सकते हैं तो अपने रीसाइक्लिंग व्यू एडाप्टर में http://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html#onViewDetachedFromWindow(VH) ओवरराइड करके। आप धारक को पैरामीटर के रूप में प्राप्त करेंगे जो अभी स्क्रीन से निकल गया है। आप उस धारक में उपलब्ध किसी भी दृश्य के क्लिकक्लिकनर पर सेट कर सकते हैं।

या यदि आप स्क्रीन पर दिखाई देने पर बस ऐसा करना चाहते हैं, तो आप बाइंडव्यूहोल्डर() पर कर सकते हैं। लेकिन यह समझ में नहीं आता है क्योंकि आप श्रोता सेटिंग से बच सकते हैं।

अंक याद करने के लिए, इस जवाब से संबंधित:
श्रोता शून्य पर वहाँ आवश्यकता हो सकती है की स्थापना जब आप सेट हर डेटा के लिए, लेकिन केवल कुछ करने के लिए देखने के लिए श्रोता क्लिक करें स्थापित करने के लिए नहीं करना चाहती। इस मामले में, श्रोताओं को स्क्रीन से बाहर जाने के दौरान सेट करने के लिए हमेशा बेहतर होता है। अन्यथा, जैसा कि RecyclerView धारक ऑब्जेक्ट्स का पुन: उपयोग (रीसायकल) करेगा जो दिखाई देने वाले नए डेटासेट का प्रतिनिधित्व करने के लिए चले गए थे। इस प्रक्रिया में, डेटा सेट (धारक में देखें) जिसे आपने श्रोता सेट नहीं किया है, रीसाइक्लिंग के कारण श्रोता सेट हो सकता है।

सभी सब में

, और अशक्त onCLickListener आदि

2

यदि आप RecyclerView का उपयोग कर रहे हैं और OnClickListener एस को प्रत्येक पंक्ति रूट दृश्य में बाध्यकारी हैं, तो उन्हें निपटाने की कोई आवश्यकता नहीं है।

लेकिन अगर कुछ दृश्यों क्लिक करने के लिए घटना के जवाब नहीं चाहिए बस setOnClickListener(null)

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

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