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

سلام دوستان در این سری از آموزش های برنامه نویسی اندروید به آموزش Expandable RecyclerView در برنامه نویسی اندروید می پردازیم همان طور که از نام معلوم است زمانی که بروی Recyclerview کلیک شود گشترش داده می شود همینطور به نام expanding and collapsing (گسترش و سقوط ) نیز معروف هستند شاید کمی گیج شده باشید بهتر از عکس متحرک زیر را مشاهده کنید تا کمی بیشتر با آن آشنا شوید در ادامه با ما همراه باشید.

 
همانطور که میبینید متریال دیزان نیز هست ! به صورت معمول Expandable RecyclerView ها دکمه ای برای نمایش رو به پایین و در زمان باز شدن دکمه ای برای نمایش رو به بالا ندارند.
 
ابتدا باید دو کتاب خانه را به پروژه خود اضافه کنیم اولی که همان RecyclerView است و دومی هم Expandable RecyclerView است ما برای متریال دیزان بودن آن از این کتاب خانه استفاده کرده ایم.
پس وارد فایل Build.gradle شده (module) در قسمت dependencies کتاب خانه های زیر را اضافه کنید.

سپس پروژه را sync کنید (همگان سازی) ما قبلا علت خطای گریدل را بررسی کرده ایم در صورتی که به خطایی بر خوردید در سایت جستجو کنید.
expandable لیست ها دو نوع view دارند اولی گروه را مشخص می کند و دومی child یا فرزند را مشخص می کند اگر بالا عکس متحرک بالا را نگاه کنید ios , android و windowsphone گروه را تشکیل داده اند و زمانی که بروی آن کلیک می شود child های آن نمایش داده می شود.
پس یک کلاس به نام MobileOS.java که group ما رو تشکیل می دهد ایجاد کنید کد های زیر را در آن قرار دهید.

 
حالا باید یک کلاس دیگر برای child های آنها ایجاد کنیم.
پس یک کلاس به نام Phone.java ایجاد کنید و کدهای زیر را در آن قرار دهید.

 
حالا باید برای کلاس های بالا ViewHolder نگه داریم همانطور که از اسمش معلوم است view های ما را نگه میدارد .
پس یک کلاس به نام OSViewHolder.java ایجاد کرده کدهای زیر را در آن قرار دهید.

در بالا ما از دو عکس arrow بالا و پایین استفاده کردیم یعنی زمانی که در حالت expand و collapse است دارای عکس های مخصوصی هستند شما می توانید عکس ها را از زیر دریافت کرده و در پوشه drawbale خود قرار دهید (یا عکس های خودتان را استفاده کنید)
 
حالا باید یک viewholder برای child هامون درست کنیم.
پس یک فایل به نام PhoneViewHolder.java ایجاد کنید کد های زیر را در آن قرار دهید.

در بالا یکسری عکس قرار دهید (این عکس های برای هر child در نظر گرفته می شود عکس متحرک بالا را که نگاه کنید متوجه می شوید.)
 
حال باید برای هر کدام از group و child یک فایل xml که view آنها را تشکیل می دهد ایجاد کنیم.
پس یک فایل در پوشه layout خود به نام group_view_holder.xml ایجاد کنید کد های زیر را در آن قرار دهید.

حالا یک فایل به نام child_view_holder.xml برای child خودمون درست می کنیم و کد های زیر را در آن قرار می دهیم.

 
حالا باید یک آداپتور سفارشی برای RecyclerView درست کنیم فرق این آداپتور با بقیه آداپتور در دوبار به دست آوردن view یا Viewholder است به صورت معمول ما فقط می تونیم یکی از آنها را تنظیم کنیم ولی با کمک کتاب خانه دومی ما RecyclerAdapter را به ExpandableRecyclerViewAdapter گسترش دادیم و مقدار ورودی آن را دوتا کردیم پس باید یک فایل به نام RecyclerAdapter.java ایجاد کنید کد های زیر را در آن قرار دهید.

حالا زمان درست کردن فایل activity_main.xml است پس یک فایل با همین نام ایجاد کرده و RecyclerView را در آن قرار دهید.

برای اینکه حالت expand/collapse را ذخیره کنیم از onSaveInstanceState() و onRestoreInstanceState() استفاده کردیم.
حالا یک فایل به نام MainActivity.java  ایجاد کرده کد های زیر را در آن قرار دهید.

در ابتدا view مرتبط با RecyclerView را به دست آوردیم سپس یک آرایه از model که در قبل ساختیم (mobileOSes) که به group ازش نام بردیم ایجاد کردیم تا داده ها را در آن قرار دهیم همینطور یک آرایه از child هامون درست کردیم و کار void که نامش setData است داده های sample را در model های ما قرار می دهد و در آخر آداپتور رو در Recyclerview ست کردیم.
 
دوستان در بالا برای هر child کلیک Listener تعریف نشده برای اینکه برای آنها Click Listener تعریف کنید می تونید از کد زیر استفاده کنید.
 

 
این آموزش هم به پایان رسید.
 
 
موفق و موید باشید.
 
 
 
 

مطالعه بیشتر