RecyclerView बनाम ListView


295

Android डेवलपर से ( सूची और कार्ड बनाना ):

RecyclerView विजेट ListView का अधिक उन्नत और लचीला संस्करण है।

ठीक है, यह अच्छा लग रहा है, लेकिन जब मैंने इस उदाहरण चित्र को देखा, तो मैं वास्तव में इन दोनों के बीच के अंतर के बारे में भ्रमित हो गया।

यहां छवि विवरण दर्ज करें

ListViewकस्टम एडेप्टर का उपयोग करके उपरोक्त चित्र आसानी से बनाया जा सकता है ।

तो, किस स्थिति में उपयोग करना चाहिए RecyclerView?



1
@ देव here explain६: मेरा सुझाव है कि आप यहाँ एक टिप्पणी जोड़ते हैं जिसमें विस्तार से बताया गया है कि आप इस प्रश्न के कई मौजूदा उत्तरों से क्या महसूस कर रहे हैं ।
कॉमन्सवेअर

जवाबों:


374

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

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

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

उदाहरण:

mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//or
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));
  1. सामान्य सूची क्रियाओं को एनिमेट करता है - एनिमेशन को डिकूप्ट कर दिया जाता है ItemAnimator

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

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


16
सूची दृश्य की मुख्य ज़िम्मेदारी 1.) दी गई जगह के भीतर और अधिमानतः 2.) वस्तुओं का पुन: उपयोग करना है। RecylerView के साथ यह एकल जिम्मेदारियों में टूट जाता है - दृश्य रीसायकल को रीसायकल करता है और यह दिया जाता है कि LayoutManager स्क्रीन पर आइटम की व्यवस्था करता है। दूसरे शब्दों में, रीसायकल दृश्य यह नहीं जानता / परवाह करता है कि स्क्रीन पर आइटम कहाँ रखें, यह सिर्फ उन्हें पुनर्चक्रित करने का ध्यान रखता है। एंड्रॉयड डॉक से: "LayoutManager एक RecyclerView बदलकर एक मानक खड़ी स्क्रॉल सूची, एक समान ग्रिड लागू करने के लिए इस्तेमाल किया जा सकता, ग्रिड टेढ़े, क्षैतिज संग्रह स्क्रॉल और अधिक।"
daneejela

32
"ऊपर / नीचे स्क्रॉल करते समय पुन: उपयोग करें": जहां तक ​​मुझे पता है कि यह पूरी तरह से गलत है क्योंकि यह देखने वाले के बिना भी सूची में होता है।
रूबन

16
लिस्टव्यू में व्यू होल्डर का मुख्य उपयोग यह है कि आपका कोड findViewById () को अक्सर ListView की स्क्रॉलिंग के दौरान कह सकता है, जो प्रदर्शन को धीमा कर सकता है। यहां तक ​​कि जब एडेप्टर रीसाइक्लिंग के लिए एक फुलाया हुआ दृश्य देता है, तब भी आपको तत्वों को देखने और उन्हें अपडेट करने की आवश्यकता होती है। FindViewById () के बार-बार उपयोग का एक तरीका "व्यू होल्डर" डिज़ाइन पैटर्न का उपयोग करना है। एक ViewHolder ऑब्जेक्ट लेआउट के टैग क्षेत्र के अंदर घटक के प्रत्येक दृश्य को संग्रहीत करता है, इसलिए आप उन्हें बार-बार देखने की आवश्यकता के बिना तुरंत उन तक पहुंच सकते हैं।
रूबन

7
मैं जो कहने की कोशिश कर रहा हूं वह यह है कि जब आप व्यू होल्डर के बिना सूची को लागू करते हैं, तब भी रो को पुनर्नवीनीकरण किया जाएगा। यह संपत्ति और सूची का लाभ है। यही उन्होंने लिस्टव्यू बनाया।
रुबन

उन्होंने कुछ खास नहीं किया, इन सुविधाओं को किसी के द्वारा भी जोड़ा जा सकता है। आप ListView और BaseAdapter को बढ़ा सकते हैं और यदि आप चाहें तो इसमें कोई भी सुविधा जोड़ सकते हैं। वास्तव में इन दोनों में कोई अंतर नहीं है।
एमडीपी

39

सूची के प्रदर्शन के लिए अच्छा प्रदर्शन करने के लिए आपको धारक पैटर्न को लागू करने की आवश्यकता होगी, और यह विशेष रूप से गड़बड़ करना आसान है जब आप सूची को कई अलग-अलग प्रकार के विचारों के साथ आबाद करना चाहते हैं।

RecyclerView इस पैटर्न को बनाता है, जिससे इसे गड़बड़ाना अधिक कठिन होता है। यह अधिक लचीला भी है, जिससे विभिन्न लेआउट को संभालना आसान हो जाता है, जो कि ग्रिड की तरह सीधे रैखिक नहीं हैं।


6
हाँ ! , वहाँ जब recyclerview का उपयोग नहीं करने के लिए और अधिक चर्चा होनी चाहिए । यदि आपकी पंक्तियों में मॉडल के डेटा के आधार पर गतिशील रूप से सामग्री है और आप Recycler view, BOOM का उपयोग करते हैं।
राणा दीप

1
आपको मॉडल डेटा के आधार पर गतिशील सामग्री जोड़ने में सक्षम होना चाहिए। आपको बस किसी भी प्रकार की सामग्री के लिए अलग-अलग दृश्य सेटअप करने होंगे जो आप समर्थन करना चाहते हैं।
कैप्चर करें

36

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

  • Viewसमान आइटम प्रकारों के लिए पुन: उपयोग को लागू नहीं किया गया (एक एडेप्टर का उपयोग करें जो कि में उपयोग किया जाता है ListView, यदि आप getView पद्धति का अध्ययन करते हैं तो आप देखेंगे कि कोई भी प्रोग्रामर हर पंक्ति के लिए एक नया दृश्य बनाने से रोकता नहीं है, भले ही एक में पास किया गया हो convertViewचर के माध्यम से )

  • महंगे findViewByIdउपयोग को नहीं रोका गया (भले ही आप विचारों को पुन: चक्रित कर रहे हों, जैसा कि ऊपर उल्लेख किया गया था, देवों के लिए findViewByIdबाल विचारों की प्रदर्शित सामग्री को अपडेट करने के लिए कॉल करना संभव था । ViewHolderपैटर्न का मुख्य उद्देश्य कॉल ListViewsको कैश करना findViewByIdथा। हालांकि यह केवल था। उपलब्ध है अगर आप इसके बारे में जानते थे क्योंकि यह मंच का हिस्सा नहीं था)

  • केवल पंक्तिबद्ध व्यू के साथ वर्टिकल स्क्रॉलिंग का समर्थन किया गया दृश्य (रिसाइकलर व्यू इस बात की परवाह नहीं करता है कि दृश्य कहाँ रखे गए हैं और उन्हें कैसे स्थानांतरित किया गया है, यह एक में सार है LayoutManager। एक रिसाइकलर ListViewऊपर दिखाए गए अनुसार पारंपरिक , साथ ही साथ जैसी चीजों का समर्थन कर सकता है GridView, लेकिन यह उसी तक सीमित नहीं है, यह अधिक कर सकता है, लेकिन आपको ऐसा करने के लिए प्रोग्रामिंग पैर का काम करना होगा)।

  • जोड़ा / हटाया जाना एनिमेशन एक ऐसा उपयोग मामला नहीं था जिसे माना जाता था। यह जानने के लिए कि यह कैसे जाना जाता है (RecyclerView की तुलना करें। एडॉप्टर क्लासेस सूचित करें * विधि प्रसाद v। एक दृश्य प्राप्त करने के लिए सूची दृश्य)।

संक्षेप RecyclerViewमें एक अधिक लचीला ले रहा है ListView, यद्यपि आपकी ओर से अधिक कोडिंग की आवश्यकता हो सकती है।


20

RecyclerViewएक नया ViewGroup है कि एक समान तरीके से किसी भी अनुकूलक आधारित दृश्य प्रस्तुत करने के लिए तैयार किया जाता है। यह उत्तराधिकारी होने के लिए सर्वोच्च है ListView and GridView, और इसमें पाया जा सकता है latest support-v7 versionRecyclerViewके साथ विकसित किया गया है तानाना मन में है, इसलिए यह लेआउट के किसी भी प्रकार आप सोच सकते हैं बनाने के लिए संभव है, लेकिन नहीं एक छोटे से दर्द-इन-द-गधा खुराक के बिना।

एंटोनियो लीवा से लिया गया उत्तर

 compile 'com.android.support:recyclerview-v7:27.0.0'

RecyclerViewवास्तव में एक powerful viewसे है ListView। अधिक जानकारी के लिए आप इस पेज पर जा सकते हैं ।


5
मुझे आपके उत्तर से यह वाक्य पसंद आया: यह एंड्रॉइड है, इसलिए चीजें कभी भी आसान नहीं होती हैं यह सच है कि एंड्रॉइड ऐप डेवलपमेंट के लिए क्या हो रहा है, लेकिन मुझे लगता है कि यह सिर्फ कुछ गलत है कि उन्होंने एपीआई और साथ ही पैटर्न बनाने के लिए कैसे डिज़ाइन किया है एंड्रॉइड ऐप। सैद्धांतिक रूप से एक अच्छा डिज़ाइन प्रोग्रामर से सभी संभावित जटिलताओं को छिपाना चाहिए (लेकिन अभी भी उन्नत लोगों के लिए सुलभ हो सकता है), वे जो आमतौर पर देखभाल करते हैं, वह यूआई से संबंधित समस्याओं (और अधिक थकाऊ समस्याओं से निपटने के अलावा व्यापार तर्क, डेटा और अन्य एल्गोरिदम हैं) Android के विकास में)।
होपलेस

18

RecyclerView और ListView के बीच कुछ प्रमुख बिंदु / अंतर निम्नलिखित हैं। अपनी समझदारी से बुलाओ।

यदि ListView आपके लिए काम करता है, तो माइग्रेट करने का कोई कारण नहीं है। यदि आप एक नया UI लिख रहे हैं, तो आप RecyclerView के साथ बेहतर हो सकते हैं।

RecylerView में इनबिल्ट व्यूहॉल्डर है, हमारे अपने को लिस्ट व्यू में लागू करने की आवश्यकता नहीं है। यह विशेष रूप से सूचकांक पर भी सूचित समर्थन करता है

आपके द्वारा कुछ भी करने के बिना आइटम को जोड़ने या हटाने को एनिमेट करने जैसी चीजें पहले से ही RecyclerView में लागू हैं

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

i) लिनियरलेयूटमैनगर - जो लंबवत और क्षैतिज दोनों सूचियों का समर्थन करता है, ii) स्टैगर्डलेयआउट मैनटेगर - जो कि पिनग्रेस्ट जैसे कंपित सूचियों का समर्थन करता है, iii) ग्रिडलाइयटमैनेजर - जो गैलरी एप्स में देखे गए ग्रिड को प्रदर्शित करने का समर्थन करता है।

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


14

प्रमुख लाभ:

ViewHolderडिफ़ॉल्ट रूप से उपलब्ध नहीं है ListView। हम स्पष्ट रूप से अंदर पैदा करेंगे getView()RecyclerViewइनबिल्ट है Viewholder


4

उपरोक्त मतभेदों के अलावा निम्नलिखित कुछ और हैं:

  1. आरवी देखने के लिए डेटा के निर्माण और बंधन को अलग करता है। LV में, आपको यह देखने की ज़रूरत है कि डेटा को बाइंड करने से पहले, कन्वर्ट व्यू शून्य है या नहीं। तो, आरवी के मामले में, दृश्य केवल तभी बनाया जाएगा जब इसकी आवश्यकता होगी लेकिन LV के मामले में, कोई भी कन्वर्टव्यू के लिए चेक को याद कर सकता है और हर बार दृश्य बनाएगा।

  2. अब लेआउटमैन के साथ ग्रिड और सूची के बीच स्विच करना अधिक आसान है।

  3. सभी आइटमों को सूचित करने और अद्यतन करने की आवश्यकता नहीं है, भले ही केवल एक आइटम बदल गया हो।

  4. एक को LV के मामले में दृश्य कैशिंग लागू करना पड़ा। यह आरवी में डिफ़ॉल्ट रूप से प्रदान किया जाता है। (दृश्य कैशिंग एन रीसाइक्लिंग के बीच अंतर है।)

  5. आरवी के मामले में बहुत आसान आइटम एनिमेशन।


4

सूची पर RecyclerView के लाभ:

  1. डिफ़ॉल्ट रूप से ViewHolder शामिल है।

  2. आसान एनिमेशन।

  3. क्षैतिज, ग्रिड और कंपित लेआउट का समर्थन करता है

RecyclerView पर सूची दृश्य के लाभ:

  1. विभक्त जोड़ने के लिए आसान।

  2. सरल सादे सूचियों के लिए इनबिल्ट arrayAdapter का उपयोग कर सकते हैं

  3. हैडर और पाद लेख का समर्थन करता है।

  4. OnItemClickListner का समर्थन करता है।


4
जहां तक मैं समझता हूँ कि आप आसानी से उपयोग कर एक recyclerView करने के लिए एक विभक्त जोड़ सकते हैं recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL));की तरह कुछ करने के बादrecyclerView = view.findViewById(R.id.feed);
nviens

1
@ सूची को देखने के लिए आप विभक्त को जोड़ सकते हैं, उसकी ऊँचाई को समायोजित कर सकते हैं और उसका रंग बदल सकते हैं। इसके अलावा डिवाइडर के लिए वर्तमान कार्यान्वयन ठीक है, यह पहले से ही recyclerview के लिए डिवाइडर जोड़ने के लिए एक बुरा सपना था, बस इस उत्तर की जांच करें कि डिवाइडर के लिए पिछला कार्यान्वयन कैसे stackoverflow.com/a/27037230/647804747 पर
मनोहर रेड्डी

4

RecyclerView और ListView के बीच 8 अंतर

Recyclerview बनाम ListView

1. ViewHolder पैटर्न

इस्तेमाल किया पद्धति के लिए कॉल को कम करने के findViewById () तरीकों।

ListView में, आप ViewHolder का उपयोग किए बिना आसानी से एक सूची बना सकते हैं। लेकिन RecyclerView के मामले में नहीं।

2. अडॉप्टर

ये दोनों ही AdapterViews हैं, हाँ। यह एडेप्टर क्लास के आधार पर काम करता है।

ArrayAdapter, CursorAdapter जैसे डिफ़ॉल्ट एडेप्टर का उपयोग करके ListView का निर्माण करना आसान है, लेकिन एक नया कस्टम एडाप्टर क्लास बनाने के लिए RecyclerView RecyclerView.Adcape क्लास प्रदान करता है।

आप RecrelerView के साथ ArrayAdapter या किसी अन्य अंतर्निहित एडेप्टर का उपयोग नहीं कर सकते।

3. आइटम की व्यवस्था

मैंने सरल और कम कोड में वर्टिकल लिस्ट व्यू बनाया है। लेकिन क्या होगा अगर हमें एक GridView बनाने की आवश्यकता है?

RecyclerView अपने आइटम को व्यवस्थित करने के लिए LayoutManager का उपयोग करता है। 3 लेआउटमैन क्लास हैं।

  • LinearLayoutManager - रैखिक प्रकार की सूची बनाने में मदद करता है।
  • GridLayoutManager - ग्रिड बनाने के लिए उपयोग किया जाता है।
  • StaggeredGridLayoutManager - चौंका देने वाला बनाने के लिए उपयोग किया जाता है।

एनिमेशन

सूची दृश्य में मूलभूत एनिमेशन का अभाव है। लेकिन RecyclerView सरल एनिमेशन के साथ आता है।

डिवाइडर

एंड्रॉयड: विभक्त और एंड्रॉयड: dividerHeight विशेषताओं या setDivider (), setDividerHeight () आप ListView में कस्टम विभक्त बनाने के लिए मदद करता है।

25.1.0 के बाद से, आप एक सरल विभक्त बनाने के लिए DividerItemDecoration वर्ग का उपयोग कर सकते हैं ।

ईवेंट पर क्लिक करें

RecyclerView में OnItemClickListener का अभाव है , हाँ यह बहुत दुखद है। लेकिन वे डेवलपर को RecyclerView.OnItemTouchListener प्रदान करके अधिक नियंत्रण देते हैं

विधियाँ सूचित करें

आपको सही एनिमेशन करने के लिए उचित सूचना * विधियों को कॉल करने की आवश्यकता है। सूची दृश्य के साथ तुलना करने पर RecylcerView में बहुत सारी सूचनाएँ * विधियाँ हैं।


3

मुझे लगता है कि उनके पास मुख्य और सबसे बड़ा अंतर यह है कि ListViewइसे बनाते या लगाते समय आइटम की स्थिति के लिए दिखता है, दूसरी तरफ RecyclerViewआइटम के प्रकार के लिए दिखता है। यदि उसी प्रकार के साथ बनाया गया कोई अन्य आइटम है, तो RecyclerViewउसे फिर से नहीं बनाते हैं। यह पहले अडैप्टर से पूछता है और फिर रिसाइकल्डपूल से पूछता है, अगर पुनर्नवीनीकरण पूल कहता है "हाँ, मैंने इसके समान एक प्रकार बनाया है", तो RecyclerViewउसी प्रकार बनाने की कोशिश नहीं करता है। ListViewइस तरह का पूलिंग तंत्र नहीं है।


2

मेरी राय में सूची RecyclerViewमें उपयोग किए गए रीसायकल पैटर्न के साथ समस्या को संबोधित करने के लिए बनाया गया था क्योंकि यह डेवलपर के जीवन को और अधिक कठिन बना रहा था। अन्य सभी आप कम या ज्यादा संभाल सकते हैं। उदाहरण के लिए मैं के लिए एक ही एडाप्टर का उपयोग ListViewऔर GridViewयह कोई बात नहीं दोनों विचारों में getView, getItemCount, getTypeCountप्रयोग किया जाता है तो यह ही है। RecyclerViewजरूरत नहीं है अगर ग्रिड एडेप्टर के ListViewसाथ ListAdapterया GridViewआपके लिए पहले से ही काम कर रहा है। यदि आपने ViewHolderअपने साक्षात्कारों में पैटर्न को सही ढंग से लागू किया है तो आपको कोई बड़ा सुधार नहीं दिखेगा RecycleView


2

मैंने थोड़ा काम किया RecyclerViewऔर अभी भी पसंद कर रहा हूं ListView

  1. यकीन है, दोनों का उपयोग करते हैं ViewHolders, तो यह एक फायदा नहीं है।

  2. A RecyclerViewकोडिंग में अधिक कठिन है।

  3. A में RecyclerViewशीर्ष लेख और पाद लेख नहीं है, इसलिए यह एक ऋण है।

  4. A ListViewको ViewHolder बनाने की आवश्यकता नहीं है। ऐसे मामलों में जहां आप वर्गों या उपशाखाओं के साथ एक सूची रखना चाहते हैं, यह स्वतंत्र आइटम (एक ViewHolder के बिना) बनाने के लिए एक अच्छा विचार होगा, यह आसान है और अलग-अलग वर्गों की आवश्यकता नहीं है।


1
आप recyclerview एडाप्टर में हेडर और कंटेंट साइड बना सकते हैं और यह लिस्टव्यू की तुलना में अधिक लचीला होगा। बस यूरी माइंडव्यू को रिसाइकलव्यू में बदलने के लिए कड़ी मेहनत करें, लेकिन यदि आप ऐसा कर सकते हैं, तो आप समझेंगे कि मेरा क्या अर्थ है। सूची से हटा दिया गया है बस recyclerview goodluck सीखने का प्रयास करें
erginduran

2
@ फर्गिन्दुरान, मैंने दोनों का इस्तेमाल किया। ListView का अभी भी व्यापक रूप से उपयोग किया जाता है और इसे हटाया नहीं जाता है। इसके अलावा यह RecyclerView की तुलना में कम मेमोरी बर्बाद करता है। यदि आप केवल एक दृश्य को RecyclerView के साथ बदलना चाहते हैं, तो यह एक अच्छा विचार नहीं होगा।
CoolMind

बस जाँच करें कि इस लोगों ने इसके लिए recyclerview को क्यों विकसित किया? सूची में सुधार, सही? Google play में बहुत सारे पुराने lib और apps हैं जिससे आप सही listview हैं, अभी भी व्यापक रूप से उपयोग किया जाता है। अतीत में पुरानी चीजों को छोड़ दें। तुलना की जाँच करें -> लिंक
erginduran

@ गुरुइंदूरन, धन्यवाद। आप सही हैं, RecyclerView के कुछ फायदे हैं। मेरा जवाब सामान्य कार्यों के बारे में था जहां एक सूची दृश्य कभी-कभी एक पुनर्नवीनीकरण दृश्य की तुलना में अधिक आसान होता है। बेशक, एनीमेशन और कुछ अन्य सुधार सूची दृश्य में मुश्किल या संभव नहीं हैं।
CoolMind

मैंने उस विषय में कुछ पहलुओं को जोड़ा, देखें stackoverflow.com/a/39721769/2914140
कूलमाइंड

1
  1. क्लिक श्रोता प्रदान करने के लिए आप एक इंटरफ़ेस का उपयोग कर सकते हैं। मैं ListViews के साथ भी इस तकनीक का उपयोग करता हूं।
  2. कोई विभाजक नहीं: बस अपनी पंक्ति में एक दृश्य को मिलाएं, जिसकी चौड़ाई match_parent और 1dp की ऊँचाई के साथ हो और इसे पृष्ठभूमि रंग दें।
  3. बस पंक्ति पृष्ठभूमि के लिए एक स्टेटलिस्ट चयनकर्ता का उपयोग करें।
  4. addHeaderView को ListViews में भी टाला जा सकता है: बस हेडर को व्यू के बाहर रखें।

इसलिए, यदि दक्षता आपकी चिंता है, तो हाँ, यह एक अच्छा विचार है कि एक पुनर्नवीकरण दृश्य के साथ एक सूची दृश्य को बदलें।


0

सरल उत्तर: आपको ऐसी स्थिति में RecyclerView का उपयोग करना चाहिए, जहां आप बहुत सी चीजें दिखाना चाहते हैं, और उनमें से संख्या गतिशील है। ListView का उपयोग केवल तब किया जाना चाहिए जब आइटमों की संख्या हमेशा समान हो और स्क्रीन आकार तक सीमित हो।

आपको यह कठिन लगता है क्योंकि आप केवल एंड्रॉइड लाइब्रेरी को ध्यान में रखते हुए सोच रहे हैं।

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

घबराएँ नहीं और RecyclerView को आज़माएँ, आप वेब से डाउनलोड की गई 100 वस्तुओं की सूची बनाना पसंद कर सकते हैं (जैसे facebook न्यूज़) एक ListView और एक RecyclerView में, आपको UX में अंतर दिखाई देगा (उपयोगकर्ता अनुभव) जब आप स्क्रॉल करने की कोशिश करते हैं, तो शायद परीक्षण ऐप बंद हो जाएगा इससे पहले कि आप इसे भी कर सकते हैं।

मैं आपको आसान एडेप्टर बनाने के लिए इस दो पुस्तकालयों की जांच करने की सलाह देता हूं:

फास्ट एडेप्टर mikepenz द्वारा

फ्लेक्सिबल एडेप्टर द्वारा davideas


1
मुझे लगता है कि दोनों के बीच प्रदर्शन अंतर के बारे में आपके बयान अतिरंजित हैं। मैं 2012 के बाद से एक प्रोडक्शन ऐप में लिस्टव्यू का उपयोग कर रहा हूं, प्रत्येक पंक्ति में ~ 10 अलग-अलग दृश्यों के साथ 3000 तक आइटम प्रदर्शित करता है, पुराने एंड्रॉइड 2.3 डिवाइसों पर भी बिल्कुल कोई समस्या नहीं है।
मैग्नस डब्ल्यू

0

RecyclerView की जानकारी

के RecyclerViewसाथ पेश किया गया था Android 5.0 (Lollipop)। यह सपोर्ट लाइब्रेरी में शामिल है । इस प्रकार, यह एंड्रॉइड एपीआई स्तर 7 के साथ संगत है।

इसी तरह ListView, RecyclerView’sमुख्य विचार एक प्रदर्शन के अनुकूल तरीके से लिस्टिंग कार्यक्षमता प्रदान करना है। इस दृश्य के नाम का 'रिसाइक्लर' संयोग से नहीं है। RecyclerViewवास्तव में आइटम जिससे वह वर्तमान में काम कर रहा है पुनरावृत्ति कर सकते हैं। रीसाइक्लिंग प्रक्रिया व्यू होल्डर नामक एक पैटर्न की बदौलत की जाती है

पेशेवरों और RecyclerView के विपक्ष

पेशेवरों:

  • आइटम जोड़ने, अपडेट करने और निकालने के लिए एकीकृत एनिमेशन
  • ViewHolder पैटर्न का उपयोग करके विचारों की रीसाइक्लिंग को लागू करता है
  • ग्रिड और सूची दोनों का समर्थन करता है
  • ऊर्ध्वाधर और क्षैतिज स्क्रॉलिंग का समर्थन करता है
  • DiffUtil के साथ एक साथ इस्तेमाल किया जा सकता है

विपक्ष:

  • जटिलता जोड़ता है
  • कोई OnItemClickListener

सूची दृश्य

ListViewके बाद से Android के बहुत शुरुआत के आसपास किया गया है। इसमें भी उपलब्ध था API Level 1और इसका उद्देश्य भी यही है RecyclerView

ListView का उपयोग वास्तव में सरल है। इस पहलू में, यह इसके उत्तराधिकारी की तरह नहीं है। सीखने की अवस्था RecyclerView के लिए एक से अधिक चिकनी है। इस प्रकार, इसे समझना आसान है। हमें LayoutManager, ItemAnimator या DiffUtil जैसी चीजों से निपटना नहीं है।

पेशेवरों और सूची के विपक्ष

पेशेवरों:

  • सरल उपयोग
  • डिफ़ॉल्ट एडेप्टर
  • उपलब्ध OnItemClickListener
  • की नींव है ExpandableListView

विपक्ष:

  • ViewHolder पैटर्न के उपयोग को स्वीकार नहीं करता है

0

ListView और RecyclerView के बीच कई अंतर हैं, लेकिन आपको विशेष रूप से निम्नलिखित के बारे में पता होना चाहिए:

  • ViewHolder पैटर्न पूरी तरह से ListView में वैकल्पिक है, लेकिन इसे RecyclerView में पकाया जाता है।
  • ListView केवल ऊर्ध्वाधर स्क्रॉलिंग का समर्थन करता है, लेकिन RecyclerView लंबवत स्क्रॉल सूची तक सीमित नहीं है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.