آموزش RecyclerView - برنامه نویسی اندروید

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

RecyclerView

تاریخچه RecyclerView

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

چرا ScrollView

برای درک بهتر چرایی استفاده از ویوهای که برای نمایش لیست ها استفاده میشوند اجازه بدهید با مهم ترین دلیل آن یعنی کمبود فضای نمایش شروع کنیم. در تلفن های هوشمند همیشه کمبود فضای نمایشی یکی از دلایلی بود که توسعه دهندگان را مجبور میکرد که محتوای خود را بصورت پلکانی زیر یا کنار یکدیگر قرار بدهند. وقتی تعداد این آیتم ها بیشتر میشد قسمت هایی از گرافیک در بخش های خارج از صفحه نمایش قرار میگرفت و از دید کاربر خارج میشد و نیاز بود تا روشی پیاده سازی شود تا کاربر بتواند بخشهای از دسترس خارج شده را ببیند. بر این اساس برای حل این مشکل, ویوی با نام ScrollView بوجود آمد که قدرت پیمایش از سمت بالا به پایین (یا بلعکس) و چپ به راست (یا بلعکس) را به ویو فرزندی که درون آن قرار میگرفت, میداد.

چرا ListView

تا این مرحله توسعه دهندگان توانستند این امکان را داشته باشند که بتوانند در یک Activity تعداد زیادی ویو را به کاربران خود نمایش بدهند. بعد از آن کمی که جلوتر رفتند متوجه شدن در اکثر موارد نیاز دارند تا ویوهای تکراری را در صفحه, نمایش بدهند. (مانند نمایش مخاطبین در دفترچه تلفن) برای انجام اینکار نیاز بود که هر آیتم را یا بصورت دستی در گرافیک اضافه کنند یا در بخش کدنویسی پروژه هر بار یک ویو را با استفاده از Inflate کردن و تنظیم کردن تغییرات به صفحه نمایش اضافه کنند. این روش در همان اول احساس شد که نیازمند کدنویسی های اضافی میباشد و زمان زیادی برای هر مورد این چنینی مصرف میشد. به همین دلیل ویوی با نام ListView ایجاد شد.

با استفاده از ListView توسعه دهندگان میتوانستند با ست کردن یک adapter, تمامی کارهای مدیریت, تنظیم و نمایش اطلاعات را به adapter واگذار کنند و تا جای ممکن کدنویسی های اضافه انجام نمیشد و به این شکل میشد به تعداد نامحدودی ویوهای تکراری پشت سرهم را در صفحه به کاربران نمایش داد.

مشکل استفاده از ListView

تا این مرحله پیشرفتیم که با استفاده از adapterهایی که ListView برای ما در دسترس قرار میداد میتوانستیم لیستی از ویوهای تکراری را به کاربران براحتی نمایش بدهیم. اما باز هم کم کم مشکلی جدید تحت عنوان Memory Leak یا کمبود حافظه خودش را بیشتر نشان میداد. در این خطا اپ با پیام Force close برمیخورد و از دسترس میشود. دلیل این مشکل این است که برای نمایش هر آیتم از این لیست نیاز بود که ویوی برای آن بوجود آید تا بتوان آن را نمایش داد.

هر ویو برای نمایش باید در حافظه تلفن قرار بگیرید. بدیهی است اگر تعداد این ویوها بیشتر شود در نتیجه حافظه بیشتری نیاز است تا بتوان همه این ویوها را در خود نگه دارد. زمانی که حافظه بیش از حد پر شود تلفن دیگر نمیتواند برنامه های ضروری خود را بخوبی اجرا کند و مجبور است تا حافظه را خالی کند. در اولین قدم برنامه های غیرضروری که حافظه زیادی را اشغال کردن را حتی اگر در حال اجرا باشند از دسترس خارج میکند تا بتواند حافظه را تا حد نرمالی که بتواند سیستم را با استفاده از آن سرپا نگهدارد, خالی کند.

چرا RecyclerView

برای حل مشکل کمبود حافظه, RecyclerView را طراح کردند که از جنبه های مختلفی شبیه به ListView بود اما با امکاناتی فراتر از آن. در RecyclerView به اندازه ای که صفحه نمایش کاربر جا داشت, ویو inflate میشود و اطلاعات روی آن ویو هم پوشانی میشود. بعد از اسکرول کردن, ویوی که قبلا در صفحه نمایش بود و از دید کاربر خارج میشود, مجدد بازیافت میشود و اطلاعات جدید روی آن تنظیم میشوند. یعنی اگر ما 1000 آیتم درون یک لیست داشته باشیم فقط 5 ویو ایجاد میشود و برای تمامی آیتم ها از آن ویوها استفاده میشود. (البته این عدد بستگی به ارتفاع ویو و صفحه نمایش و نوع چینیش آن بستگی دارد و اینجا این عدد فقط یک مثال است)

با استفاده از این روش, مدیریت کاملی در استفاده از حافظه از تلفن انجام میشود. نکته دیگری که نباید جا بیفتد این است که شما با استفاده از RecyclerView میتوانید بیش از یک نوع ویو بکار بگیرید و مانند ListView اجبار به استفاده از یک نوع ویو را ندارید.

چرا این آموزش

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

ویژگی های این آموزش

  • آنالیز کامل نحوه کار کرد RecyclerView
  • پیاده سازیAdapter در RecyclerView با اشکال مختلف
  • بررسی ViewHolder
  • طراحی ViewHolder برای Adapter
  • بررسی بحث کپسوله سازی برای RecyclerView
  • بررسی کامل LayoutManager ها
  • پیاده سازی چند نوع ویو در یک Adapter برای RecyclerView
  • پیاده سازی Listener کلیک برای هر آیتم در Adapter
  • بررسی متد های Notify برای اضافه, جابجای یا حذف کردن یک آیتم از Adapter بدون دوباره ست کردن آن

 

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر نیاز است تا ابتدا وارد سایت شوید.

هیچ نظری ارسال نشده است.

قیمت آموزش
۱۰,۰۰۰ تومان
نوع دسترسی
نقدی

این مقاله در حال حاضر تنها به روش نقدی در دسترس می باشد.

ناصر خالدی
مدرس دوره

ناصر خالدی

مهندس شبکه, امنیت, برنامه نویسی تلفن های هوشمند, طراح وب سایت و متخصص هوش مصنوعی

گفتگوی برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن

مقالات پیشنهادی

پی اچ پی - PHP

با استفاده از این زبان می توان وب سایت های پویا طراحی کرد, این زبان می تواند با HTML ادغام شود, در حقیقت یک زبان اسکریپتی متن باز و رایگان است. یعنی زمانی که سرور درخواست ...


۹۴۶
۰
۱۳ آذر ۱۳۹۹

وردپرس

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


۸۰۸
۰
۱۳ آذر ۱۳۹۹

هک و امنیت

در تعریف کلی این واژه می توان گفت که به پیدا کردن راه های نفوذ به یک حریم شخصی و استفاده غیر مجاز از آن را هک می نامیم. هدف از هک می تواند ...


۹۵۹
۰
۱۳ آذر ۱۳۹۹

جاوا اسکریپت

جاوا اسکریپت یک زبان پویا و محبوب مبتنی بر شیء, داینامیک و مفسری می باشد. این زبان برای برنامه نویسی سمت سرور و کلاینت استفاده میشود که ...


۸۶۸
۰
۱۳ آذر ۱۳۹۹

Fatal error: Uncaught wfWAFStorageFileException: Unable to verify temporary file contents for atomic writing. in /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php:52 Stack trace: #0 /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php(659): wfWAFStorageFile::atomicFilePutContents('/home/clonerco/...', '<?php exit('Acc...') #1 [internal function]: wfWAFStorageFile->saveConfig('livewaf') #2 {main} thrown in /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php on line 52