تفاوت ListView و RecyclerView در سیستم عامل اندروید چیست؟


تفاوت ListView و RecyclerView

بهینه بودن، مهم ترین تفاوت ListView و RecyclerView

در توسعه برنامه های اندرویدی ، مواقعی پیش می آید که نیاز داریم آیتم ها را به حالت Scroll نمایش دهیم. به این منظور چندین راه وجود دارد که متداول ترین آنها استفاده از ListView و RecyclerView می باشد. اما باید بدانیم که تفاوت ListView و RecyclerView در چیست.

ListView یک ویجت خوب قدیمی هست که از API یک وجود داشته. متاسفانه با این متد فقط می توانیم عناصر را به طور عمودی نمایش دهیم. همچنین برای اینکه کاربر بتواند بطور مناسب و روان از لیست ویو استفاده کند ، باید کارهای بخصوصی هنگام پیاده سازی آن اعمال کرد. علاوه بر این ، کلاس ListView به دلیل وظایف زیادی که دارد به مراتب سنگین است.

بعد از توصیه گوگل به استفاده از RecyclerView ، بسیاری از برنامه نویس ها بدون آنکه تفاوت ListView و RecyclerView را بدانند ، کلاس جدید را جایگزین کردند. اما RecyclerView که با اندرویدLollipop  معرفی شد چه مزیت هایی دارد؟

بسیاری از موارد آزار دهنده و محدودیت هایی که ListView ایجاد می کرد با RecyclerView برطرف شد. بطور پیش فرض بهینه تر شد و امکان بیشتری برای ست کردن دیتا در آداپتر بوجود آمد.

در ادامه به بررسی متدهایی میپردازیم که عمده تفاوت ListView و RecyclerView را رقم می زنند.

 

ViewHolder

قبلا در ListView مجبور بودیم که یک پترن ViewHolder برای خودمان بسازیم تا بتوانیم View های داخل لیست را کنترل و نگهداری کنیم. اما در RecyclerView این پترن به شکل اتوماتیک قرار گرفته است و کار ما کمتر شده.

این پترن امکان پردازش روان تری در نمایش لیست به ما می دهد. همچنین متد findViewById که پردازش سنگینی دارد ، به جای آنکه برای کل آیتم ها استفاده شود ، فقط در موارد خاص صدا زده می شود. این امر موجب بهبود سرعت می شود.

در واقع آداپتر RecyclerView ما را مجبور به استفاده از پترن ViewHolder می کند که خود مرحله ساخت را به دو متد onCreateViewHolder و onBindViewHolder می شکند.

داخل پرانتز بد نیست اشاره کنیم که مرحله ساخت شامل inflate کردن layout و پیدا کردن view ها می باشد.

در واقع ما چنین امکانی هنگام پیاده سازی لیست ویو نداریم که همین موضوع منجر به ساخت یک ScrollView غیر بهینه خواهد شد.

شاید بتوان وجود یک ViewHolder از پیش ساخته شده را ، اصلی ترین تفاوت ListView و RecyclerView دانست.

 

LayoutManager

چگونگی قرار گرفتن آیتم ها به کمک این متد کنترل می شود. همچنین مانند ListView محدودیت قرارگیری آیتم ها فقط به صورت افقی را نداریم.

علاوه بر چگونگی قرار گرفتن، امکان انتخاب چگونه نمایش دادن آیتم ها را هم داریم. در واقع به علت وجود این متد ، ScrollView ما انعطاف پذیر می باشد.

 

ItemDecoration

وظیفه این متد در هنگام استفاده از آن ساده است ، حتی زمانی که بخواهیم به طور اختصاصی یک نمونه custom از آن بسازیم. برای مثال در نظر بگیرید که بطور پیش فرض خط جدا کننده ای بین آیتم ها در RecyclerView وجود ندارد. اما این کلاس کمکی در ListView وجود ندارد و تمام کار به عهده دولوپر خواهد بود.

 

ItemAnimator

آخرین تفاوت ListView و RecyclerView که قصد داریم مطرح کنیم ، وجود ItemAnimator در RecyclerView می باشد.

همان طور که از اسمش پیداست صحبت بر سر چگونگی نمایش و محو شدن آیتم ها، اضافه و حذف آیتم ها با حالت های خاص و … است.

بطور پیش فرض نمایش آیتم ها در RecyclerView به شکل خوب و روانی صورت می گیرد. البته که خود دولوپر هم میتواند بطور اختصاصی کلاسی تعریف کند تا انیمیشن های مد نظرش را پیاده سازی کند اما این کار به این آسانی ها نیست. میتوانیم به راحتی با extend کردن کلاس SimpleItemAnimation در کلاس ViewHolder و پیاده سازی متد هایی که نیاز داریم این مورد را عملی کنیم.

همان طور که قابل حدس است پیاده سازی این عملیات در ListView عذاب آور است! چون باز باید در این مورد هم به فکر چگونه هندل کردن موارد باشیم. جای خوشحالیست که به کمک RecyclerView  میتوان از این موارد خلاص شد!

 

به این پست امتیاز دهید

روی ستاره های کلیک کنید و امتیاز بدید

میانگین امتیاز / 5. تعداد:

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *




Enter Captcha Here : *

Reload Image