package Ġcom . faf ad iate ch . news cout . adapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Base Expand able ListAdapter Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . faf ad iate ch . news cout . R Ċ import Ġcom . faf ad iate ch . news cout . model . Menu Model Ċ import Ġcom . faf ad iate ch . news cout . model . Top Menu Model Ċ Ċ class ĠExpand ListAdapter ( ĊĠĠĠĠĠĠĠ Ġvar Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġvar Ġlist Data Header : ĠList < Top Menu Model >, ĊĠĠĠĠĠĠĠ Ġvar Ġlist Data Child : ĠHashMap < Top Menu Model , ĠList < Menu Model > ?> Ċ ) Ġ: ĠBase Expand able ListAdapter () Ġ{ ĊĊĠĠĠ Ġvar Ġselected Item Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġget Group ( group Position : ĠInt ): ĠTop Menu Model Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . list Data Header . get ( group Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Child Selectable ( p 0 : ĠInt , Ġp 1 : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas Stable Ids (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Group View ( group Position : ĠInt , Ġis Expanded : ĠBoolean , ĠconvertView : ĠView ?, Ġparent : ĠViewGroup ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheader Title Ġ= Ġget Group ( group Position ). menu Name ĊĊĠĠĠĠĠĠĠ Ġvar Ġview : ĠView ĊĠĠĠĠĠĠĠ Ġif Ġ( convert View Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinf al Inflater Ġ= Ġthis . context ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= Ġinf al Inflater . inflate ( R . layout . list _ group _ header , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= ĠconvertView ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlbl List Header Ġ= Ġview . findViewById < TextView >( R . id . lbl List Header ) ĊĠĠĠĠĠĠĠ Ġvar Ġimg View Menu Ġ= Ġview . findViewById < ImageView >( R . id . img _ menu _ item ) ĊĠĠĠĠĠĠĠ Ġvar Ġselected Color Ġ= ĠContext Compat . getColor ( context , ĠR . color . black ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( group Position Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg View Menu . setImage Resource ( R . drawable . trend ing _ news ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( group Position Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg View Menu . setImage Resource ( R . drawable . latest _ news ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( group Position Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg View Menu . setImage Resource ( R . drawable . sector _ update ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( group Position Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg View Menu . setImage Resource ( R . drawable . internet ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( group Position Ġ== Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg View Menu . setImage Resource ( R . drawable . finance ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( group Position Ġ== Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg View Menu . setImage Resource ( R . drawable . econom y ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( group Position Ġ== Ġ 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg View Menu . setImage Resource ( R . drawable . news ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg View Menu . setImage Resource ( R . drawable . trend ing _ news ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlbl List Header . text Ġ= Ġheader Title ĊĠĠĠĠĠĠĠ Ġlbl List Header . setTextColor ( Context Compat . getColor ( context , ĠR . color . black )) ĊĠĠĠĠĠĠĠ Ġimg View Menu . setColor Filter ( selected Color , ĠPort er D uff . Mode . SRC _ AT OP ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Children Count ( group Position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . list Data Child . get ( this . list Data Header . get ( group Position )) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġthis . list Data Child . get ( this . list Data Header . get ( group Position )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Child ( group Position : ĠInt , Ġchild Position : ĠInt ): ĠMenu Model Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlist Data Child . get ( list Data Header . get ( group Position )) !!. get ( child Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget GroupId ( group Position : ĠInt ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġgroup Position . to Long () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Child View ( group Position : ĠInt , Ġchild Position : ĠInt , Ġis Last Child : ĠBoolean , ĠconvertView : ĠView ?, Ġparent : ĠViewGroup ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchild Text : ĠString ? Ġ= Ġget Child ( group Position , Ġchild Position ). sub Menu Data ?. name ĊĠĠĠĠĠĠĠ Ġvar Ġview : ĠView ĊĠĠĠĠĠĠĠ Ġif Ġ( convert View Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġinf al Inflater Ġ= Ġthis . context ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= Ġinf al Inflater . inflate ( R . layout . list _ group _ child , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= ĠconvertView ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtxt List Child Ġ= Ġview . findViewById < TextView >( R . id . lbl ListItem ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! child Text . isNull Or Blank ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtxt List Child . text Ġ= Ġchild Text ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Child Id ( group Position : ĠInt , Ġchild Position : ĠInt ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġchild Position . to Long () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Group Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . list Data Header . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Item Selection ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Item Ġ= Ġposition ĊĠĠĠ Ġ} Ċ }