آموزش کامل RecyclerView

Mostafa Nasiri
توسط Mostafa Nasiri در آموزش های اندروید,
[align=center]به نام خدا[/align] [align=center]آموزش RecyclerView قسمت 1[/align] [align=right]سلام دوستان[/align] [align=right]در این تاپیک قصد دارم آموزش RecyclerView در اندروید رو بنویسم که این قسمت اولش هست و انشالله در چند قسمت با این ویجت آشنا میشیم.[/align] [align=right]RecyclerView چیست؟[/align] [align=right]بنابر تعریف Documentation رسمی اندروید RecyclerView نسخه بهینه تر و انعطاف پذیرتری از ListView می باشد. توصیه شده وقتی که میخوایم حجم بالایی از اطلاعات رو در لیست نمایش بدیم و وقتی که قراره محتویات لیست دائما تغییر کنه (مثلا با دریافت اطلاعات از اینترنت یا مثلا حذف و اضافه آیتم ها توسط کاربر) به جای listview از RecyclerView استفاده بشه. اما اگر مثلا قراره در برنامتون یه لیست ایستا شامل مثلا 20 آیتم داشته باشید هیچ دلیلی نداره که از RecyclerView استفاده کنید و این ویجت برای ایجاد لیست های پیشرفته طراحی شده (احتمالا در آینده به طور کلی جای ListView رو بگیره)[/align] برخی از ویژگی های RecyclerView: [align=right]برخلاف ListView رعایت الگوی طراحی ViewHolder در RecyclerView الزامیست.[/align] [align=right]برخلاف ListView که تنها حالت قرارگیری آیتم های لیست به صورت عمودی بود در RecyclerView می توان به چندین حالت آیتم های لیست در کنارهم قرار بگیرند[/align] [align=right]در RecyclerView می توان به راحتی برای حذف و اضافه آیتم ها از لیست انیمیشن تعریف کرد[/align] [align=right]عیب RecyclerView: تنها عیبی که میتوان به این ویجت گرفت، حجم بیشتر کد مورد نیاز نسبت به لیست ویو و پیچیدگی بیشتر نسبت به لیست ویو میباشد.[/align] [align=right]مثال: لیست زیر با RecyclerView طراحی شده:[/align] [align=center]http://inducesmile.com/wp-content/uploads/2015/06/grid.jpg[/img][/align] [align=right]نحوه کار RecyclerView [/align] [align=right]طرز کار RecyclerView به این صورته: به عنوان مثال اگر 100 آیتم برای نمایش در RecyclerView داشته باشیم اونوقت RecyclerView در ابتدای شروع برنامه (وقتی که تازه لیست ویو ایجاد میشه و اطلاعات داخلش قرار میگیرن) برای هر آیتم یک View ایجاد میکنه اما نه برای تمام 100 آیتم!  به عنوان مثال شما در ابتدا 12 آیتم در لیست مشاهده می کنید این یعنی فقط 12 View ایجاد شده و در حافظه قرار داره و اگر لیست رو اسکرول کنید و پایین برید برای بقیه آیتم ها View ساخته میشه اما در عین حال تمام View های قبلی که حالا در صفحه نیستن از بین نمیرن و معمولا 2 آیتم قبلی بالای لیست در حافظه نگهداری میشن و وقتی دوباره به سمت بالا اسکرول کنید RecyclerView آیتم های قبلی که در حافظه موندن رو دوباره Recycle میکنه (دلیل نامگذاری هم همینه) و به این ترتیب اسکرول کردن بسیار نرم و روان میشه. مطابق شکل زیر:[/align] [align=center]تصویر سمت چپ یک لیست رو در ابتدای شروع برنامه نشون میده[/align] [align=center]تصویر سمت راست لیست به پایین اسکرول شده و همونطور که در شکل مشخصه دو آیتم قبلی که بیرون صفحه هستن نگهداری میشن تا وقتی دوباره به سمت بالا اسکرول شد نیازی به ساخت دوباره آیتم ها نباشه (بازیافت)[/align] [align=center]http://www.grokkingandroid.com/wordpress/wp-content/uploads/2014/08/recycling_of_views.png[/img][/align] [align=right]RecyclerView با سه عنصر اصلی زیر کار میکنه:[/align] [align=right]ViewHolder: ویو هولدر یک وظیفه ساده داره: نگهداری یک آیتم از لیست. اگر یه ViewHolder خالی باشه یعنی باید یک View جدید (آیتم جدید) ایجاد بشه و داخل ویوهولدر قرار بگیره اگر هم از قبل یک View نگهداری کنه اونوقت از همون قبلی استفاده میشه (همون Recycling که توضیح دادم)[/align] [align=right]Adapter: ادپتر دو وظیفه بسیار مهم داره: ساخت View یا همان آیتم لیست و قرار دادن اون در یک ViewHolder و چسباندن اطلاعات به هر آیتم (Data Binding)[/align] [align=right]LayoutManager: نحوه نمایش آیتم های لیست (عمودی، افقی، گرید و ...) به عهده LayoutManager است.[/align] [align=right]نکته مهم: اصلی ترین تفاوت های RecyclerView با لیست ویو این هست که برخلاف لیست ویو که نحوه نمایش آیتم ها به عهده خودش بود، RecyclerView اصلا با نحوه نمایش و قرارگیری آیتم ها کاری نداره و این کار رو به LayoutManager ها واگذار کرده. به عبارت بهتر: آرایش لیست هیچ ربطی به RecyclerView نداره! کار RecyclerView همونطور که از اسمش معلومه فقط بازیافته![/align]
  • 7 پاسخ