package Ġcom . ash raf 0 0 7 . expand able selection view . adapter Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . core . view . isVisible Ċ import Ġcom . ash raf 0 0 7 . expand able selection view . R Ċ import Ġcom . ash raf 0 0 7 . expand able selection view . extension . inflate Ċ import Ġcom . ash raf 0 0 7 . expand able selection view . view . Expand able Selection View Ċ Ċ open Ġclass ĠBasic String Adapter ( ĊĠĠĠ Ġprivate Ġval Ġitems : ĠList < String >, ĊĠĠĠ Ġvar Ġhint : ĠString ? Ġ= Ġnull Ċ ) Ġ: ĠExpand able Item Adapter Ġ{ ĊĊĠĠĠ Ġ@ Drawable Res ĊĠĠĠ Ġvar Ġselected State Res Id : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġ@ Drawable Res ĊĠĠĠ Ġvar Ġcollapsed State Res Id : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġ@ Drawable Res ĊĠĠĠ Ġvar Ġexpanded State Res Id : ĠInt ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġinf late Header View ( parent : ĠViewGroup ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġparent . inflate ( R . layout . basic _ expand able _ header _ layout ) ĊĠĠĠĠĠĠĠ Ġval Ġheader TV Ġ= Ġview . findViewById < TextView >( R . id . header TV ) ĊĠĠĠĠĠĠĠ Ġheader TV . hint Ġ= Ġhint ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinf late Item View ( parent : ĠViewGroup ) Ġ= ĊĠĠĠĠĠĠĠ Ġparent . inflate ( R . layout . basic _ expand able _ item _ layout ) ĊĊĠĠĠ Ġoverride Ġfun Ġbind Item View ( item View : ĠView , Ġposition : ĠInt , Ġselected : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem TV Ġ= ĠitemView . findViewById < TextView >( R . id . itemName TV ) ĊĠĠĠĠĠĠĠ Ġitem TV . text Ġ= Ġitems [ position ] ĊĠĠĠĠĠĠĠ ĠitemView . findViewById < ImageView >( R . id . selection IV ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setImage Resource ( selected State Res Id Ġ?: ĠR . drawable . ic _ selected ) ĊĠĠĠĠĠĠĠ ĠitemView . findViewById < View >( R . id . selection IV ). isVisible Ġ= Ġselected ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind Header View ( header View : ĠView , Ġselected Indices : ĠList < Int >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheader TV Ġ= Ġheader View . findViewById < TextView >( R . id . header TV ) ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Indices . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader TV . text Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader TV . text Ġ= Ġselected Indices . join ToString Ġ{ Ġitems [ it ] Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Items Count () Ġ= Ġitems . size ĊĊĠĠĠ Ġoverride Ġfun Ġon View StateChanged ( header View : ĠView , Ġstate : ĠExpand able Selection View . State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= Ġheader View . findViewById < ImageView >( R . id . list Indicator IV ) ĊĠĠĠĠĠĠĠ ĠimageView . setImage Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExpand able Selection View . State . Expanded Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded State Res Id Ġ?: ĠR . drawable . ic _ expanded _ arrow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExpand able Selection View . State . Collapsed Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollapsed State Res Id Ġ?: ĠR . drawable . ic _ collapsed _ arrow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }