1. धारकों को देखें
ListView में, दृश्य धारकों को परिभाषित करना विचारों के संदर्भों को रखने के लिए एक सुझाया गया दृष्टिकोण था। लेकिन यह कोई मजबूरी नहीं थी। हालाँकि ऐसा नहीं करने पर, ListView शो बासी डेटा का उपयोग करता था। दृश्य धारकों का उपयोग न करने का एक और बड़ा दोष हर बार आईडी द्वारा विचारों को खोजने का एक बड़ा संचालन हो सकता है। जिसके परिणामस्वरूप सूचीबद्घ सूची देखी गई।
यह समस्या RecyllerView.ViewHolder वर्ग के उपयोग द्वारा RecylerView में हल की गई है। यह RecyclerView और ListView में प्रमुख अंतरों में से एक है। RecyclerView को लागू करते समय इस क्लास का उपयोग ViewHolder ऑब्जेक्ट को परिभाषित करने के लिए किया जाता है जो कि ViewHolder को एक स्थिति से बांधने के लिए एडेप्टर द्वारा उपयोग किया जाता है। यहां ध्यान देने योग्य एक और बात यह है कि RecyclerView के लिए एडॉप्टर को लागू करते समय, एक ViewHolder प्रदान करना अनिवार्य है। यह कार्यान्वयन को थोड़ा जटिल बनाता है, लेकिन सूची दृश्य में आने वाले मुद्दों को हल करता है।
2. लेआउट प्रबंधक
ListViews के बारे में बात करते समय, केवल एक प्रकार की ListView उपलब्ध होती है, जो वर्टिकल लिस्ट व्यू है। आप क्षैतिज स्क्रॉल के साथ एक सूची दृश्य लागू नहीं कर सकते। मुझे पता है कि एक क्षैतिज स्क्रॉल को लागू करने के तरीके हैं, लेकिन मेरा विश्वास है कि यह उस तरह से काम करने के लिए डिज़ाइन नहीं किया गया था।
लेकिन अब जब हम Android RecyclerView vs ListView को देखते हैं, तो हमारे पास क्षैतिज संग्रह के लिए भी समर्थन है। वास्तव में यह कई प्रकार की सूचियों का समर्थन करता है। कई प्रकार की सूचियों का समर्थन करने के लिए यह RecyclerView.LayoutManager वर्ग का उपयोग करता है। यह कुछ नया है जो ListView के पास नहीं है। RecyclerView पूर्वनिर्धारित लेआउट प्रबंधकों के तीन प्रकारों का समर्थन करता है:
LinearLayoutManager - यह RecyclerView के मामले में सबसे अधिक इस्तेमाल किया जाने वाला लेआउट प्रबंधक है। इसके माध्यम से, हम क्षैतिज और ऊर्ध्वाधर दोनों स्क्रॉल सूची बना सकते हैं। StaggeredGridLayoutManager - इस लेआउट प्रबंधक के माध्यम से, हम कंपित सूची बना सकते हैं। बिल्कुल Pinterest स्क्रीन की तरह। GridLayoutManager- इस लेआउट प्रबंधक का उपयोग किसी भी चित्र गैलरी की तरह ग्रिड प्रदर्शित करने के लिए किया जा सकता है।
3. आइटम एनिमेटर
एक सूची में एनिमेशन एक नया आयाम है, जिसमें अनंत संभावनाएं हैं। एक सूची दृश्य में, जैसे कि कोई विशेष प्रावधान नहीं हैं, जिसके माध्यम से वस्तुओं को चेतन, जोड़ना या हटाना हो सकता है। इसके बाद जैसे ही एंड्रॉइड विकसित हुआ ViewPropertyAnimator को Google के चेत हासे द्वारा इस वीडियो ट्यूटोरियल में ListView में एनिमेशन के लिए सुझाया गया।
दूसरी ओर Android RecyclerView बनाम ListView की तुलना करते हुए, इसमें एनिमेशन के लिए RecyclerView.ItemAnimator वर्ग है। इस वर्ग के माध्यम से कस्टम एनिमेशन को आइटम जोड़, विलोपन और चाल घटनाओं के लिए परिभाषित किया जा सकता है। इसके अलावा, यह एक DefaultItemAnimator प्रदान करता है, अगर आपको किसी अनुकूलन की आवश्यकता नहीं है।
4. अडॉप्टर
ListView एडेप्टर लागू करने के लिए सरल थे। उनके पास एक मुख्य तरीका getView था जहां सभी जादू हुआ करते थे। जहां विचार एक स्थिति से बंधे थे। इसके अलावा, उनके पास एक दिलचस्प विधि रजिस्टरडॉटसैटऑब्जर्वर हुआ करता था, जहां कोई एडॉप्टर में एक पर्यवेक्षक सही सेट कर सकता है। यह सुविधा RecyclerView में भी मौजूद है, लेकिन इसके लिए RecyclerView.AdcapeDataObserver वर्ग का उपयोग किया जाता है। लेकिन सूची दृश्य के पक्ष में बिंदु यह है कि यह एडेप्टर के तीन डिफ़ॉल्ट कार्यान्वयन का समर्थन करता है:
ArrayAdapter CursorAdapter SimpleCursorAdapter, जबकि RecyclerView एडाप्टर, सभी कार्यक्षमता है कि ListView एडेप्टर DB कर्सर और ArrayLists के लिए समर्थन में बनाया को छोड़कर था। RecyclerView.Adcape में अब हमें एडेप्टर को डेटा की आपूर्ति करने के लिए एक कस्टम कार्यान्वयन करना होगा। जैसे एक BaseAdapter ListViews के लिए करता है। यद्यपि यदि आप RecyclerView अनुकूलक कार्यान्वयन के बारे में अधिक जानना चाहते हैं, तो कृपया Android RecyclerView उदाहरण देखें।
5. डेटा में परिवर्तन को सूचित करना
ListView के साथ काम करते समय, यदि डेटा सेट बदला जाता है, तो आपको डेटा को ताज़ा करने के लिए अंतर्निहित एडेप्टर के InformDataSetChanged विधि को कॉल करना होगा। या setNotifyOnChange विधि को सही रूप में सेट करें जिसे आप अपने आप को InformDataSetChanged विधि को कॉल करना चाहते हैं। लेकिन दोनों मामलों में बाहर आना सूची पर बहुत भारी है। मूल रूप से यह सूची के विचारों को ताज़ा करता है।
लेकिन एक पुनर्नवीनीकरण अनुकूलक के विपरीत, यदि कोई एकल आइटम या वस्तुओं की एक श्रृंखला बदल गई है, तो तदनुसार परिवर्तन को सूचित करने के तरीके हैं। वे क्रमशः InformItemChanged और InformItemRangeChanged हैं और कई और अधिक जैसे:
InformItemInsterted InformItemMoved InformItemRangeInsterted InformItemRangeRemoved और निश्चित रूप से यह पूरी सूची को ताज़ा करने का मूल तरीका है अर्थात InformDataSetChanged जो अनुकूलित किए गए पूरे डेटा सेट को सूचित करता है।
6. आइटम सजावट
किसी सूची दृश्य में कस्टम डिवाइडर प्रदर्शित करने के लिए, कोई भी आसानी से सूची दृश्य XML में इन मापदंडों को जोड़ सकता है:
XHTML Android: विभाजक = "@ एंड्रॉइड: रंग / पारदर्शी" एंड्रॉइड: डिवाइडरहाइट = "5 डीपी" 1 2 एंड्रॉइड: डिवाइडर = "@ एंड्रॉइड: रंग / पारदर्शी" एंड्रॉइड: डिवाइडरहाइट = "5 डीपी" एंड्रॉइड RecyclerView के बारे में दिलचस्प हिस्सा है। अब तक यह डिफ़ॉल्ट रूप से वस्तुओं के बीच एक विभक्त नहीं दिखाता है। हालाँकि Google के लोगों ने इसे जानबूझकर अनुकूलन के लिए छोड़ दिया होगा। लेकिन यह एक डेवलपर के लिए प्रयास को बहुत बढ़ा देता है। यदि आप वस्तुओं के बीच एक विभक्त जोड़ना चाहते हैं, तो आपको RecyclerView.ItemDecoration वर्ग का उपयोग करके एक कस्टम कार्यान्वयन करने की आवश्यकता हो सकती है।
या आप आधिकारिक नमूनों से इस फ़ाइल का उपयोग करके हैक लागू कर सकते हैं: DividerItemDecoration.java
7. OnItemTouchListener
सूची का उपयोग क्लिक्स का पता लगाने के लिए एक सरल कार्यान्वयन के लिए किया जाता है, अर्थात AdapterView.OnItemClickListener इंटरफ़ेस के उपयोग से।
लेकिन दूसरी तरफ RecyclerView.OnItemTouchListener इंटरफ़ेस का उपयोग Android RecyclerView में स्पर्श घटनाओं का पता लगाने के लिए किया जाता है। यह कार्यान्वयन को थोड़ा जटिल करता है, लेकिन यह स्पर्श घटनाओं को रोकने के लिए डेवलपर को अधिक नियंत्रण देता है। आधिकारिक दस्तावेज़ीकरण में कहा गया है, यह जेस्चरल मैनिपुलेशन के लिए उपयोगी हो सकता है क्योंकि यह रिसाइक्लरव्यू तक पहुंचाने से पहले एक टच इवेंट को इंटरसेप्ट करता है।
RecyclerView
बहुत बेहतर एपीआई के साथ बहुत तेज और अधिक बहुमुखी है।RecyclerView
आपके द्वारा कुछ भी करने के बिना वस्तुओं को जोड़ने या हटाने का काम करने जैसी चीजें पहले से ही लागू हैं । इसके बारे में कोई सवाल ही नहीं है, अपनेListView
कूड़ेदान में फेंक दो ,RecyclerView
यहाँ शो चोरी करने के लिए है।