व्यूअर के साथ Android Recyclerview vs ListView


148

मैं हाल ही में एंड्रॉइड के RecyclerViewसाथ आया था जो एंड्रॉइड 5.0 के साथ जारी किया गया था और ऐसा लगता है कि यह दृश्य में शामिल किए गए ViewHolder पैटर्न के साथ RecyclerViewसिर्फ एक एन्कैप्सुलेटेड पारंपरिक ListViewहै, जो हर एक बार बनाने के बजाय दृश्य के पुन: उपयोग को बढ़ावा देता है।

उपयोग करने के अन्य लाभ क्या हैं RecyclerView? यदि प्रदर्शन के मामले में दोनों का प्रभाव समान है, तो कोई RecyclerView` को क्यों पसंद करेगा?

संपादित करें

मैंने पाया कि लोगों ने इसी तरह के सवाल पूछे हैं और जवाब निर्णायक नहीं हैं, उन्हें रिकॉर्ड रखने के लिए यहां जोड़ा गया है।

Recyclerview बनाम Listview

क्या हमें सूची दृश्य को बदलने के लिए RecyclerView का उपयोग करना चाहिए?

RecyclerView में onItemClickListener () क्यों नहीं है? और कैसे RecyclerView Listview से अलग है?


4
क्योंकि RecyclerViewबहुत बेहतर एपीआई के साथ बहुत तेज और अधिक बहुमुखी है। RecyclerViewआपके द्वारा कुछ भी करने के बिना वस्तुओं को जोड़ने या हटाने का काम करने जैसी चीजें पहले से ही लागू हैं । इसके बारे में कोई सवाल ही नहीं है, अपने ListViewकूड़ेदान में फेंक दो , RecyclerViewयहाँ शो चोरी करने के लिए है।
Xaver कपेलर

4
आप लेआउट प्रबंधक को RecyclerView के साथ जोड़ सकते हैं, इसलिए वे लंबवत स्क्रॉल सूची तक सीमित नहीं हैं। यह काफी शक्तिशाली अतिरिक्त कार्यक्षमता है।
एलन

@ एलन - आपके द्वारा "लंबवत स्क्रॉलिंग लिस्ट तक सीमित नहीं" से क्या मतलब है? क्या आप कह रहे हैं कि रीसायकल व्यू ग्रिड साक्षात्कार और सूची दृश्य के लिए "प्लेसहोल्डर" के रूप में भी काम कर सकता है?
मुश्ताक जमील

@XaverKapeller - यह बहुत अच्छा होगा यदि आप दोनों के बीच के अंतर को सूचीबद्ध कर सकते हैं और एक टिप्पणी के बजाय प्रश्न का उत्तर दे सकते हैं, ताकि यह भविष्य में मेरी और दूसरों की मदद कर सके जो एक ही चीज़ के बारे में सोच रहे होंगे?
मुश्ताक जमील

@Alan - क्या आप इसका थोड़ा सा विवरण दे सकते हैं कि आपका क्या मतलब है और टिप्पणी के बजाय प्रश्न का उत्तर दें। समय निकालने के लिए धन्यवाद
मुश्ताक जमील

जवाबों:


289

Android लॉलीपॉप के आगमन के साथ, RecyclerView ने आधिकारिक तौर पर अपना रास्ता बना लिया। RecyclerView अधिक शक्तिशाली, लचीला और ListView पर एक प्रमुख वृद्धि है । मैं आपको इसमें एक विस्तृत जानकारी देने की कोशिश करूंगा।

1) ViewHolder पैटर्न

एक ListView में, यह ViewHolder पैटर्न का उपयोग करने की सिफारिश की गई थी लेकिन यह कभी भी एक मजबूरी नहीं थी। RecyclerView के मामले में, यह RecyclerView.ViewHolder वर्ग का उपयोग करना अनिवार्य है । यह ListView और RecyclerView के बीच प्रमुख अंतरों में से एक है।

यह RecyclerView में चीजों को थोड़ा अधिक जटिल बनाता है, लेकिन बहुत सी समस्याएं जिनका हमने ListView में सामना किया है, कुशलता से हल हो जाती हैं।

2) लेआउटमैन

यह एक और बड़े पैमाने पर वृद्धि RecyclerView के लिए लाया गया है। किसी सूची दृश्य में, उपलब्ध सूची दृश्य का एकमात्र प्रकार है। क्षैतिज सूची दृश्य को लागू करने का कोई आधिकारिक तरीका भी नहीं है।

अब RecyclerView का उपयोग करके, हम कर सकते हैं

i) रैखिकलेयूटमैनगर - जो ऊर्ध्वाधर और क्षैतिज सूची का समर्थन करता है,

ii) स्टैगर्ड लेलआउट मैनजर - जो कंपित सूचियों की तरह पिंटरेस्ट का समर्थन करता है,

iii) GridLayoutManager - जो गैलरी एप्स में देखे गए ग्रिड को प्रदर्शित करने का समर्थन करता है।

और सबसे अच्छी बात यह है कि हम इन सभी को गतिशील रूप से कर सकते हैं जैसा हम चाहते हैं।

3) आइटम एनिमेटर

अच्छे एनिमेशन के समर्थन में लिस्ट व्यू की कमी है, लेकिन RecyclerView इसमें एक नया आयाम लाता है। RecyclerView.ItemAnimator वर्ग का उपयोग करना , विचारों को एनिमेट करना इतना आसान और सहज हो जाता है।

4) आइटम सजावट

ListViews के मामले में, गतिशील रूप से सजाने वाली वस्तुएं जैसे कि बॉर्डर या डिवाइडर जोड़ना कभी भी आसान नहीं था। लेकिन RecyclerView के मामले में, RecyclerView.ItemDecorator वर्ग डेवलपर्स को भारी नियंत्रण देता है, लेकिन चीजों को थोड़ा अधिक समय लेने और जटिल बनाने में मदद करता है।

5) OnItemTouchListener

ListView पर आइटम क्लिक को इंटरसेप्ट करना सरल था, इसके AdViewView.OnItemClickListener इंटरफ़ेस के लिए धन्यवाद । लेकिन RecyclerView RecyclerView.OnItemTouchListener ( अब समर्थित नहीं है, कृपया AndroidX को देखें ) द्वारा अपने डेवलपर्स को बहुत अधिक शक्ति और नियंत्रण देता है , लेकिन यह डेवलपर के लिए चीजों को थोड़ा जटिल करता है।

सरल शब्दों में, RecyclerView ListView की तुलना में बहुत अधिक अनुकूलन योग्य है और अपने डेवलपर्स को बहुत अधिक नियंत्रण और शक्ति देता है।


34
अच्छा उत्तर। अतिरिक्त विशाल प्लस की एक जोड़ी: RecyclerView दृश्य प्रविष्टियों के ठीक आगे और पीछे का दृश्य तैयार करता है, जो कि अगर आप पृष्ठभूमि में बिटमैप ला रहे हैं तो बहुत अच्छा है। प्रदर्शन नाटकीय रूप से तेज़ है, खासकर यदि आप RecyclerView.setHasFixedSize का उपयोग करते हैं। पुराना ListView इस आधार पर आधारित है कि सूची में प्रविष्टियों के आकार को पूर्व-निर्धारित या कैश करने का कोई तरीका नहीं है, जो स्क्रॉलिंग और लेआउट करते समय पागल जटिलताओं का कारण बनता है। इसकी आदत पड़ने में थोड़ा समय लगता है, लेकिन एक बार ऐसा करने के बाद आप कभी पीछे नहीं हटेंगे।
रॉबिन डेविस

@RobinDavies उत्कृष्ट बिंदु। सूचित करने के लिए धन्यवाद। लेकिन इससे कोई मतलब नहीं होगा कि वस्तुओं के आकार अलग-अलग हैं।
अरित्रा रॉय

@AritraRoy Recyclerview लॉलीपॉप पर ही समर्थन करता है या एपीआई 14+ (एंड्रॉइड 4+) भी? .... जैसा कि मैंने "लॉलीपॉप के बाद" पढ़ा: अधिकांश स्थानों पर
अनिमेष मंगला

2
अरे, Aritra, जब ListView की तुलना, अगर ListView भी ViewHolder पैटर्न का उपयोग करता है, तो कौन सा अधिक कुशलता से कार्य करता है? क्या एफसीएल या अन्य समान मापदंड fps thx ~ का उपयोग करते समय RecylerView बेहतर होगा,
RxRead

@RxRead: रॉबिन की टिप्पणी देखें, वह प्रदर्शन के आधार पर दृश्य धारक पैटर्न के साथ RecyclerView Vs ListView को अलग करता है।
पराग कदम

10

उपयोग करने RecycleViewका अन्य प्लस एनीमेशन है, यह कोड की दो लाइनों में किया जा सकता है

RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator();
        recyclerView.setItemAnimator(itemAnimator);

लेकिन विजेट अभी भी कच्चा है, जैसे आप हेडर और फूटर नहीं बना सकते हैं ।


5
और आप कभी भी उस अर्थ में शीर्ष लेख और पाद लेख नहीं बना पाएंगे। वे आपके एडॉप्टर में सिर्फ अन्य दृश्य प्रकार हैं। सूची दृश्य में अपने एडॉप्टर को लपेटता है HeaderViewListAdapterऔर पृष्ठभूमि में हेडर समर्थन जोड़ता है। साथ RecyclerViewआप नियंत्रण में से एक हैं।
यूजेन पिंचेक

RecyclerView डिफ़ॉल्ट रूप से DefaultItemAnimator का उपयोग करता है। फिर आपने इस कोड का उपयोग क्यों किया?
अथिरा रेड्डी

9

ठीक है खुदाई की तो थोड़ा और मैं बिल फिलिप्स से इन जवाहरात पाया लेख परRecycleView

RecyclerView ListView से अधिक कार्य कर सकता है, लेकिन RecyclerView वर्ग के पास स्वयं ही ListView से कम जिम्मेदारियां हैं। बॉक्स से बाहर, RecyclerView नहीं है:

  • स्क्रीन पर स्थिति आइटम
  • चेतन विचार
  • स्क्रॉल करने के अलावा किसी भी टच इवेंट को हैंडल करें

यह सब सामान ListView में बेक किया गया था, लेकिन RecyclerView इन कार्यों को करने के लिए सहयोगी कक्षाओं का उपयोग करता है।

आपके द्वारा बनाए गए ViewHolders बीफ़ियर भी हैं। वे उपवर्ग करते हैं RecyclerView.ViewHolder, जिसमें विधियों RecyclerView का एक गुच्छा होता है । ViewHoldersपता है कि वे वर्तमान में किस पद के लिए बाध्य हैं, साथ ही कौन से आइटम आईडी (यदि आपके पास हैं)। प्रक्रिया में, ViewHolder नाइट की गई है। यह संपूर्ण आइटम दृश्य को होल्ड करने के लिए लिस्ट व्यू का काम हुआ करता था, और ViewHolderकेवल इसके छोटे-छोटे टुकड़ों पर आयोजित होता था।

अब, ViewHolder इस ViewHolder.itemView क्षेत्र में सभी को रखता है , जिसे आपके लिए ViewHolder के निर्माता को सौंपा गया है।


4

बिल फिलिप के लेख से अधिक (इसे पढ़ें!) लेकिन मुझे लगा कि निम्नलिखित बातों को बताना महत्वपूर्ण है।

ListView में, क्लिक की घटनाओं को संभालने के तरीके के बारे में कुछ अस्पष्टता थी: क्या व्यक्तिगत विचारों को उन घटनाओं को संभालना चाहिए, या सूची दृश्य को OnItemClickListener के माध्यम से उन्हें संभालना चाहिए? RecyclerView में, हालाँकि, ViewHolder एक स्पष्ट स्थिति में है जो पंक्ति-स्तरीय नियंत्रक ऑब्जेक्ट के रूप में कार्य करता है जो उन प्रकार के विवरणों को संभालता है।

हमने पहले देखा था कि LayoutManager ने पोजिशनिंग व्यूज संभाले थे, और ItemAnimator ने उन्हें एनिमेट किया। ViewHolder अंतिम टुकड़ा है: यह किसी विशेष आइटम पर होने वाली घटनाओं को संभालने के लिए जिम्मेदार है जो RecyclerView प्रदर्शित करता है।


2

मैंने ListViewग्लाइड इमेज लोडर के साथ, मेमोरी ग्रोथ वाले का उपयोग किया। फिर मैंने उसकी जगह ListViewRecyclerView। यह न केवल कोडिंग में अधिक कठिन है, बल्कि एक से अधिक मेमोरी उपयोग की ओर भी जाता है ListView। कम से कम, मेरे प्रोजेक्ट में।

एक अन्य गतिविधि में मैंने एक जटिल सूची का उपयोग किया EditText's। उनमें से कुछ में एक इनपुट विधि भिन्न हो सकती है, एक भी TextWatcherलागू किया जा सकता है। यदि मैंने एक का उपयोग किया है ViewHolder, तो TextWatcherस्क्रॉलिंग के दौरान मैं कैसे बदल सकता हूं ? तो, मैं एक के ListViewबिना इस्तेमाल किया ViewHolder, और यह काम करता है।


मैंने एक ViewHolder के बिना एक सूची दृश्य का उपयोग किया, और यह काम करता है। भयानक विचार ... स्क्रॉलिंग के दौरान मैं टेक्स्टवॉकर को कैसे बदल सकता हूं? इसे बदलने की कोई आवश्यकता नहीं है ... बस TextWacher को पुन: उपयोग करने के बाद अलग-अलग कंटेनर में डेटा डालना चाहिए ... और यह वास्तव में आसान हो सकता है
सेल्विन

@ सेल्विन, आपकी राय के लिए धन्यवाद। अब मैं उस परियोजना को संपादित नहीं कर सकता। TextWatcherएक स्क्रीन पर कई एस थे । संभवतः आप सही हैं, लेकिन मैं इसकी जांच नहीं कर सकता।
कूलमाइंड

1

सेल को ऊपर / नीचे स्क्रॉल करते समय पुन: उपयोग करें - यह सूची व्यू एडाप्टर में व्यू होल्डर को लागू करने के साथ संभव है, लेकिन यह एक वैकल्पिक चीज थी, जबकि रीसायकल व्यू में यह एडेप्टर लिखने का डिफ़ॉल्ट तरीका है।

इसके कंटेनर से डिकॉउंट लिस्ट - तो आप लेआउटमैनगर की सेटिंग के साथ अलग-अलग कंटेनरों (लाइनरेलयूट, ग्रिडलैयूट) में रन टाइम पर आसानी से सूची आइटम रख सकते हैं।

उदाहरण:

mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//or
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));
  • सामान्य सूची क्रियाओं को एनिमेट करता है।

  • एनिमेशन को डिकॉय किया जाता है और उसे सौंप दिया जाता है ItemAnimator

RecyclerView के बारे में अधिक है, लेकिन मुझे लगता है कि ये बिंदु मुख्य हैं।

LayoutManager

i) रैखिकलेयूटमैनगर - जो ऊर्ध्वाधर और क्षैतिज सूची का समर्थन करता है,

ii) कंपित लयआउटमैनगर - जो कंपित सूचियों की तरह पिंटरेस्ट का समर्थन करता है,

iii) GridLayoutManager - जो गैलरी एप्स में देखे गए ग्रिड को प्रदर्शित करने का समर्थन करता है।

और सबसे अच्छी बात यह है कि हम इन सभी को गतिशील रूप से कर सकते हैं जैसा हम चाहते हैं।


1

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 में स्पर्श घटनाओं का पता लगाने के लिए किया जाता है। यह कार्यान्वयन को थोड़ा जटिल करता है, लेकिन यह स्पर्श घटनाओं को रोकने के लिए डेवलपर को अधिक नियंत्रण देता है। आधिकारिक दस्तावेज़ीकरण में कहा गया है, यह जेस्चरल मैनिपुलेशन के लिए उपयोगी हो सकता है क्योंकि यह रिसाइक्लरव्यू तक पहुंचाने से पहले एक टच इवेंट को इंटरसेप्ट करता है।


1

RecyclerView एक ListView सुधार के रूप में बनाया गया था, इसलिए हाँ, आप ListView नियंत्रण के साथ एक संलग्न सूची बना सकते हैं, लेकिन RecyclerView का उपयोग करना आसान है:

  1. सेल को ऊपर / नीचे स्क्रॉल करते समय पुन : उपयोग करें: यह लिस्ट व्यू एडाप्टर में व्यू होल्डर को लागू करने के साथ संभव है, लेकिन यह एक वैकल्पिक चीज थी, जबकि रीसायकल व्यू में यह एडेप्टर लिखने का डिफ़ॉल्ट तरीका है।

  2. इसके कंटेनर से डिकॉउन्स की सूची : इसलिए आप लेआउटमैनगर की स्थापना के साथ अलग-अलग कंटेनरों (लाइनरेलआउट, ग्रिडलैयूट) में रन टाइम पर आसानी से सूची आइटम रख सकते हैं।

mRecyclerView = (RecyclerView) findViewById (R.id.my_recyclerView-view); mRecyclerView.setLayoutManager (नया LinearLayoutManager (यह)); mRecyclerView.setLayoutManager (नया GridLayoutManager (यह, 2));

  1. सामान्य सूची क्रियाओं को एनिमेट करता है: एनिमेशन को डिकम्पोज किया जाता है और आइटमएनीमेटर को सौंप दिया जाता है। RecyclerView के बारे में अधिक है, लेकिन मुझे लगता है कि ये बिंदु मुख्य हैं।

तो, समाप्त करने के लिए, "सूची डेटा" को संभालने के लिए RecyclerView एक अधिक लचीला नियंत्रण है जो केवल एक कार्य - रीसाइक्लिंग आइटमों के लिए चिंताओं और पत्तियों के प्रतिनिधिमंडल के पैटर्न का अनुसरण करता है।


0

यदि आप RecycleView का उपयोग करते हैं, तो सबसे पहले आपको सेटअप करने के लिए और अधिक प्रभावी होना चाहिए। आपको साधारण आइटम ऑनक्लिक, बॉर्डर, टच इवेंट और अन्य साधारण चीज़ को सेटअप करने के लिए अधिक समय देने की आवश्यकता है। लेकिन एंड प्रोडक्ट परफेक्ट रहेगा।

तो फैसला आपका है। मेरा सुझाव है, यदि आप फोनबुक लोडिंग जैसे साधारण ऐप को डिज़ाइन करते हैं, जहां आइटम का साधारण क्लिक ही पर्याप्त है, तो आप सूची को लागू कर सकते हैं। लेकिन अगर आप असीमित स्क्रॉलिंग के साथ सोशल मीडिया होम पेज की तरह डिजाइन करते हैं। आइटम के बीच कई अलग-अलग सजावट, उपयोग रीसायकल दृश्य की तुलना में व्यक्तिगत आइटम का बहुत नियंत्रण।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.