میخوای وارد بازار کار بشی و محصولات خودت رو بفرشی همین الان ثبت نام کن
0

RecyclerView در اندروید

ویجت RecyclerView توسط یک کتابخانه ی مجزا در اختیار توسعه دهنده قرار گرفته و در واقع جدا از فریم ورک اندروید ارائه می شود که از ورژن ۷ کتابخانه های اندروید به بعد ( API 7 و level های بالاتر ) قابل استفاده می باشد. به منظور استفاده از recycler view در پروژه ی اندروید خود، لازم است
dependency مربوطه را مانند زیر به فایل gradle build اضافه نمایید.

 

dependencies {
...
compile "com.android.support:recyclerview-v7:23.0.1"
}

 


Layout manager پیش فرض

Layout manager تعیین می کند که داده ها چگونه در لیست یا همان RecyclerView به نمایش در آیند (نحوه ی چیدمان و آرایش المان ها در لیست را مدیریت می کند.) کتابخانه ی recycler view یک سری layout manager درون ساخته و پیش فرض ارائه می دهد که در زیر عنوان شده:

LinearLayoutManager آیتم ها را در یک لیست عمودی یا افقی قابل پیمایش (دارای نوار اسکرول) به نمایش می گذارد.
GridLayoutManager
آیتم ها را با نمای جدولی (به صورت خانه بندی شده) و به اصطلاح در یک grid نمایش می دهد.

StaggeredGridLayoutManager آیتم ها را در قالب یک staggered grid به نمایش می گذارد (در staggered grid ، بر خلاف Grid View معمولی، هر گرید یا خانه برای خود طول و ارتفاع متفاوتی می تواند داشته باشد و به عبارتی خانه های جدول و آیتم هایی که در لیست به نمایش در می آیند می توانند نامتقارن باشند).

 


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

به منظور پیاده سازی RecyclerView در اندروید لازم است تعدادی کلاس را قبلش پیاده سازی کرده باشید. در جدول زیر به برخی از مهمترین این کلاس ها همراه با شرح کاربرد اشاره شده است.

 

Optionalکاربردکلاس
الزامیview یا همان المانی که در لیست قرار می گیرد را ساخته ، آن را در viewholder قرار می دهد و در نهایت داده ها را به هر view متصل یا bind می کندAdapter
الزامیتمامی المان هایی که در لیست مشاهده می کنید، اشاره گر یا متغیری متناظر در آبجکت view holder دارند. این متغیرها با مقدار المان های لیست پر می شوند. به عبارت بهتر این کلاس تک تک view های تشکیل دهنده ی لیست که متناظر آن ها به صورت تگ در فایل Layout قرار دارد را در خود ذخیره کرده و به طور آماده در دسترس قرار می دهد، به گونه ای که دیگر لازم نباشد برای هر با استفاده از viewمورد نظر، در فایل layout آن را جستجو کنیدViewHolder
الزامی است، هرچند پیاده سازی های پیش فرض و آماده دارداین کلاس مدیریت نحوه ی چیدمان و نمایش المان ها در لیست را بر عهده دارد. به عبارت دیگر view آیتم ها یا LayoutManager های موجود در لیست را اندازه گیری و موقعیت دهی کرده و همچنین قوانین مربوط به زمان بازیافت و استفاده ی مجدد از viewهایی که دیگر برای کاربر قابل مشاهده نیستند را تعیین می کند. با ویرایش LayoutManager کلاس RecyclerView قادر خواهد بود به راحتی یک لیست افقی قابل پیمایش، یک grid معمولی، ، لیست های افقی staggered grid با قابلیت پیمایش و غیره ... پیاده سازی کندLayoutManager
دارای رفتار پیش فرض است، هر چند پیاده سازی یا بدنه ی آن قابل
بازنویسی یا override می باشد.
بر روی آیتم های لیست یا پیرامون آن ها decoration ( خط های تزئین / خط پیرامون یا جداکننده غیره ..) ترسیم می کند.ItemDecoration
دارای رفتار پیش فرض بوده، اما قابل بازنویسی می باشدItemAnimator این امکان را فراهم می کند تا برای مبنای عملیاتی که بر روی آیتم های لیست اجرا می شود (یک المان اضافه / حذف شده یا ترتیب آن تغییر می کند)، انیمیشن خاصی تعریف نمایید. به عبارت دیگر به شما اجازه می دهد تا انیمیشن هایی تعریف کنید که با تغییر در adapter ، بر روی المان های لیست اعمال می شوندItemAnimator

 

می توانید این animationها و layout managerها را به صورت اختصاصی پیاده سازی نمایید.

 


مدیریت event های مربوط به کلیک یا لمس نمایشگر در لیست / recycler view

رخدادهایی که بر اثر لمس یا کلیک بر روی آیتم های موجود در لیست فعال می شوند، بایستی توسط viewها در recycler view مدیریت شود. در صورتی که view سبب فراخوانی رخدادی در object میزبان ( activityیا fragment ) شود، می توانید آن را از طریق متد سازنده ( constructor ) کلاس adapter مدیریت نمایید. این کار به شما امکان می دهد تا اشاره گری ( reference ) به آبجکت مورد نظر ذخیره کرده و متدهای آن را برای بازخورد صدا بزنید.

 


استفاده از layout های مختلف در recycler view

Adapter می بایست به ازای هر سطر در لیست، یک layout ایجاد کند. root فایل layout معمولا یک کلاس ViewGroup است که خود چندین view مانند ImageView و TextView را شامل می شود. تصویر زیر لیستی را به نمایش می گذارد که در آن سطرهای زوج و فرد چیدمان و layout متفاوتی دارند.

recycler

ecycler view نوع داده ای view را از طریق متد getItemViewType تشخیص می دهد (متد getItemViewType نوع view مستقر در مکان خاص را به منظور recycle و استفاده ی مجدد از آن برمی گرداند). چارچوب نرم افزاری اندروید ( framework ) خود به صورت پیش فرض متد onCreateViewHolder را ، در صورتی که برای این نوع داده ای لازم باشد، صدا می زند. در متد
مذکور، layout مناسب را برای نوع مورد نظر inflate کرده و سپس view holder مربوطه را بازگردانی می کنید

 


پیاده سازی انیمیشن های اختصاصی

به منظور تنظیم سفارشی و پیاده سازی انیمیشن ها در کلاس RecyclerView می بایست از کلاس RecyclerView.ItemAnimator ارث بری کرده (آن را extend نمایید) و سپس به وسیله ی متد RecyclerView.setItemAnimator() آن را به widget یا آیتم مورد نظر در لیست خود تخصیص دهید.

 


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

کلاس adapter عملیات فیلتر و مرتب سازی داده ها را بر عهده دارد. برای این منظور لازم است منطق مربوطه را در بدنه ی کلاس adapter اختصاصی خود پیاده سازی نمایید.

 


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

به وسیله ی متد notifyItemInserted(position) در کلاس adapter می توان view را مطلع نمود که یک المان جدید در مکان قرار گیری خاصی درج شده است.
به وسیله ی متد  (notifyItemRemoved(position می توان view را مطلع کرد که المانی مستقر در مکان خاص، از view حذف شده است.

 


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

نظراتتون رو زیر همین پست با ما به اشتراک بگذارید.

 

ارسال دیدگاه

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

×

سلام کاربر عزیز

هر سوالی دارید در این بخش هستیم تا شما رو راهنمائی کنیم

روی لوگومون کلیک کنید

× چطور میتونم کمکتون کنم؟