چرا RecyclerView جایگزین همیشگی ListView شد؟
در سال های اولیه سیستمعامل اندروید و شروع مباحث آموزش برنامه نویسی اندروید، نمایش لیست های داده عمدتاً توسط کامپوننت ListView صورت میگرفت. با پیچیدهتر شدن رابط های کاربری و افزایش تعداد داده ها، این کامپوننت با افت شدید فریم (Lags) و مصرف بیش از حد حافظه رم مواجه میشد؛ زیرا برای هر سطر داده به دفعات متد سنگین findViewById را صدا میزد.
برای حل بنیادین این مشکل، گوگل کامپوننت قدرتمند RecyclerView را معرفی کرد. واژه Recycle به معنای «بازیافت» است؛ بدین معنا که ویجت های خارج شده از کادر دید صفحه نابود نمیشوند، بلکه محتوای آنها با داده های سطر جدید بازنویسی شده و مجدداً استفاده میگردند. این مکانیزم هوشمندانه باعث میشود حتی با وجود هزاران سطر اطلاعات، تنها تعداد اندکی View درون حافظه فعال باشند.
سه رکن اساسی معماری RecyclerView
پیاده سازی یک لیست استاندارد با RecyclerView به همکاری سه عضو اصلی متکی است:
- الگوی ViewHolder: وظیفه نگه داری مراجع به عناصر گرافیکی سطر (مانند TextView، ImageView و دکمه ها) را بر عهده دارد تا از جستجوی تکراری در درخت Viewها جلوگیری شود.
- کلاس Adapter: مغز متفکر لیست است که وظیفه متصل کردن منبع داده (Data Source) به Viewهای طراحیشده و ایجاد ViewHolderها را مدیریت میکند. در قسمت دوم آموزش RecyclerView در اندروید به طور عمیق این کلاس را کد نویسی خواهیم کرد.
- مدیر چیدمان (LayoutManager): بزرگترین مزیت RecyclerView انعطاف پذیری در نوع نمایش است؛ مزیتی که در نسل جدید توسعه رابط کاربری با کامپوننت های LazyColumn در آموزش جامع Jetpack Compose به اوج سادگی رسیده است. بدون تغییر دادن یک خط از کدهای آداپتر، صرفاً با تغییر LayoutManager میتوانید لیست خود را به صورت عمودی (LinearLayoutManager)، شبکهای چندستونه (GridLayoutManager) یا پلهای نامنظم (StaggeredGridLayoutManager) به نمایش درآورید.
بهینه سازی کارایی و مدیریت ابعاد
یکی از سادهترین و در عین حال اثرگذارترین متدها در بهینه سازی رندر لیست، استفاده از دستور recyclerView.setHasFixedSize(true) است. فراخوانی این متد به سیستم میگوید که افزودن یا حذف آیتم ها باعث تغییر ابعاد کلی کانتینر در صفحه نمیشود؛ در نتیجه اندروید از محاسبات بیهوده چیدمان صرفنظر کرده و اسکرول نرم ۶۰ فریم بر ثانیه حاصل میشود. برای پایش فریم ریت و جلوگیری از لگ، بهره گیری از راهکارهای آموزش پروفایلینگ در اندروید و بهینه سازی مصرف رم دید عمیقی از مصرف حافظه ارائه می دهد.
امتیاز و نظرات
هنوز نظری ثبت نشده است. اولین نفر باشید.