package Ġcom . the vc group . phan ap och . section e dex pand abler ec y cl er view Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġio . github . lu iz grp . section ed recyclerview adapter . Section ed RecyclerView Adapter ĊĊ Ċ /** Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠSection ed Expand able RecyclerView Adapter : Ċ Ġ* Ċ Ġ*/ Ċ open Ġclass ĠSection ed Expand able RecyclerView Adapter ( val Ġlm : ĠLinearLayoutManager ) Ġ: ĠSection ed RecyclerView Adapter () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġcurrent Position Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġval Ġtag : ĠString Ġ= Ġ" com . h end ra angg rian . widget . Expand able Item " ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Bind ViewHolder ( holder , Ġposition ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Expand able Behavior ( holder , Ġposition ) ĊĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠType CastException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFIX ĠME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġexception Ġoccurred Ġwhile Ġaccessing Ġheader Ġor Ġfooter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Expand able Behavior ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Expand able ClickListener ( holder ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpand able Item Ġ= Ġholder . item View . find View With Tag < View >( tag ) Ġas ? ĠSection ed Expand able Item ĊĠĠĠĠĠĠĠ Ġexpand able Item ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Position Ġ!= Ġposition Ġ&& Ġit . is Opened ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . hide Now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( current Position Ġ== Ġposition Ġ&& Ġ! it . is Opened Ġ&& Ġ! it . is Closed ByUser ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . show Now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Expand able ClickListener ( holder : ĠRecyclerView . ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpand able Item Ġ= Ġholder . item View . find View With Tag < View >( tag ) Ġas ? ĠSection ed Expand able Item ĊĊĠĠĠĠĠĠĠ Ġexpand able Item ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Position Ġ= Ġholder . adapter Position ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Other Items () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurr Expand able Item Ġ= Ġlm . getChild At ( current Position Ġ- Ġlm . findFirst Visible Item Position ()) ?. find View With Tag < View >( tag ) Ġas ? ĠSection ed Expand able Item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurr Expand able Item ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( curr Expand able Item . is Opened ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurr Expand able Item . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurr Expand able Item . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠType CastException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Other Items (){ ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 Ġuntil Ġlm . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġcurrent Position Ġ- Ġlm . findFirst Visible Item Position ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Expand able Item Ġ= Ġlm . getChild At ( index )?. find View With Tag < View >( tag ) Ġas ? ĠSection ed Expand able Item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Expand able Item ?. hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠType CastException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFIX ĠME ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġexception Ġoccurred Ġwhile Ġaccessing Ġheader Ġor Ġfooter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }