package Ġcom . sam ue le p ont rem oli . bank ing app . ui . transaction history Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . sam ue le p ont rem oli . bank ing app . R Ċ import Ġcom . sam ue le p ont rem oli . bank ing app . models . Account Ċ import Ġcom . sam ue le p ont rem oli . bank ing app . models . Base Item Ċ import Ġcom . sam ue le p ont rem oli . bank ing app . ui . main . ItemClickListener Ċ import Ġcom . sam ue le p ont rem oli . bank ing app . models . Transaction Ċ import Ġkotlinx . android . synt hetic . main . item _ account . view .* Ċ import Ġkotlinx . android . synt hetic . main . item _ transaction . view .* Ċ Ċ class ĠTransaction History Adapter ( private Ġval Ġitem ClickListener : ĠItem ClickListener ?) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar ĠdataSet Ġ= Ġmutable ListOf < Base Item >() ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= ĠdataSet . size ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Header () Ġ-> ĠItem Type . TYPE _ ACCOUNT . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠItem Type . TYPE _ TRANSACTION . ordinal ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Header (): ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Type . TYPE _ ACCOUNT . ordinal Ġ-> ĠAccount Info ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ). inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ account , Ġparent , Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠTransaction ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ). inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ transaction , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( holder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTransaction ViewHolder Ġ-> Ġholder . bind ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdataSet [ position ] Ġas ĠTransaction , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem ClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAccount Info ViewHolder Ġ-> Ġholder . bind ( data Set [ position ] Ġas ĠAccount ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate List ( list : ĠList < Base Item >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( list . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSet . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSet . addAll ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠTransaction ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( transaction : ĠTransaction , Ġitem ClickListener : ĠItem ClickListener ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( item View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrency Symbol Ġ= Ġresources . getString ( R . string . e uro _ symbol ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount Formatted Display Ġ= Ġ"$ currency Symbol Ġ${ transaction . amount Formatted }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction _ amount . text Ġ= Ġamount Formatted Display ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction _ description . text Ġ= Ġtransaction . description ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction _ date . text Ġ= Ġtransaction . date Formatted ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( transaction . amount Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction _ amount . setTextColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( item View . context , ĠR . color . color Accent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction _ amount . setTextColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( item View . context , ĠR . color . color Primary ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem ClickListener ?. item Clicked ( transaction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠAccount Info ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( account : ĠAccount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( item View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbalance _ text . text Ġ= Ġaccount . balance Formatted ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġenum Ġclass ĠItem Type Ġ{ ĊĠĠĠĠĠĠĠ ĠTYPE _ TRANSACTION , ĊĠĠĠĠĠĠĠ ĠTYPE _ ACCOUNT ĊĠĠĠ Ġ} Ċ Ċ } Ċ