آموزش ساخت ExpandableListView در برنامه نویسی اندروید

سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش ساخت ExpandableListView در برنامه نویسی اندروید می پردازیم همانطور که  از نام آن پیداست یعنی ما یکسری گروه داریم که هر گروه دوباره خودش شامل یکسری child می شود پس قال Expand و collaps است همانند آموزش قبلی که برای Recyclerview ایجاد کرده بودیم باید عمل کنیم و با این فرق که آداپتور ما در اینجا کمی فرق می کند دا ادامه با ما همراه باشید.
پیش نمایشی از آن را قبل از استفاده باهم میبینیم.

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

در بالا از android:indicatorLeft برای قرار دادن یک عکسی که زمانی که روی آن کلیک می شود استفاده شده است با این ویزگی در سمت چپ قرار می گیرد.
android:divider خط جدا کننده هر یکی از لیست های ما را تنظیم می کند ما از یک رنگ استفاده کردیم.
android:dividerHeight فاصله هر کدام از Diver ها را تنظیم می کند.
حالا باید یک فایل به نام list_group.xml درست کنیم این فایل گروه های ما را تشکیل می دهد (شکل ظاهر هر گروه)

حالا باید یک فایل به نام list_item.xml درست کنیم این فایل child های ما هستند یعنی با کلیک بروی هر گروه باید یکسری Child نمایش داده شود.

حالا باید یک کلاس ایجاد کنیم که یکسری داده sample را در list قرار دهد. پس فایل ما برابر با ExpandableListDataPump.java می شود و کد های زیر را در آن قرار دهید.

در بالا سه تا آرایه درست کردیم که در هر کدام یکسری آیتم تعریف کردیم و برای اینکه یک گروه و child های آن را ایجاد کنیم از Hash map استفاده کردیم و مقدار را در لیست قرار داده ایم.
کد زیر را نگاه کنید

اولین مقدار ورودی می شود نام گروه ما و مقدار دومی می شود child های ما که باید به صورت List های آرایه شکل باشند.
 
حالا برای اینکه این مقدار ها در ExpandableListView  قرار گیرد باید یک آداپتور درست کنیم پس یک فایل به نام CustomExpandableListAdapter.java ایجاد کنید و کدهای زیر را در آن قرار دهید.

کلاس ما به BaseExpandableListAdapter گسترش (Extend) پیدا کرده شکل کلی کار به این صورت است که ما باید view هر گروه و هر child را به دست بیاریم در هر صورت هر دوباید به شکل آرایه باشند و بخش دوم باید این لیست ها شمارش شوند چرا که نیاز داریم به اندازه ای که داده وارد می شود نمایش داده شود باید index یا postion هر کدام را به دست بیاریم چون باید داده را در آن قرار بدهیم و نیاز داریم هر کدام از آنها یک id مشخص داشته باشند تا درصورت نیاز به ایجاد کلیک (click) بتوانیم آنها را کنترل کنیم.
و در آخر هم کد بخش MainActivity.java همانند زیر می شود.

در آخر هم برای هر بخش یک click ایجاد کردیم به طور مثال زمانی که گروه Expand می شود یک پیام به کاربر نمایش داده می شود و زمانی که گروه Collaps می شود پیغام نمایش داده می شود همینطور ما برای هر Child نیز یک Toast قرار دادیم تا درصورتی که نیاز داشتید از آن استفاده کنید.
 
این آموزش هم به پایان رسید.
 
موفق و موید باشید.

مطالعه بیشتر