package Ġio . ben ic . shopping list . view Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġio . ben ic . shopping list . R Ċ import Ġio . ben ic . shopping list . model . Shopping Cart Ċ import Ġio . ben ic . shopping list . utils . Currency Helper Ċ Ċ class ĠShop ping Cart Re cycle Adapter ( ĊĠĠĠ Ġval Ġdata : ĠMutable List < Shopping Cart >, ĊĠĠĠ Ġprivate Ġval Ġlistener : ĠShop ping Cart Re cycle Listener Ċ ) Ġ: ĠRecyclerView . Adapter < Shopping Cart Re cycle Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġclass ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcart Title : ĠTextView Ġ= Ġview . findViewById ( R . id . cart Title ) ĊĠĠĠĠĠĠĠ Ġval Ġshort List : ĠArray < TextView > Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . findViewById ( R . id . item 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . findViewById ( R . id . item 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . findViewById ( R . id . item 3 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġtotal Cost : ĠTextView Ġ= Ġview . findViewById ( R . id . total Cost ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdata . sortBy Descending Ġ{ Ġs Ġ-> Ġif Ġ( s . createdAt Ġ> Ġ 0 ) Ġs . createdAt Ġelse Ġs . id Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġselected : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . recycler _ view _ cart _ item , Ġparent , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( v ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġdata . size ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ Ġlistener . on Edit ( data [ position ]) Ġ} ĊĊĠĠĠĠĠĠĠ Ġholder . item View . findViewById < Button >( R . id . duplicate Button ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Duplicate ( data [ position ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġholder . cart Title . text Ġ= Ġdata [ position ]. name ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . short List [ i ]. text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( data [ position ]. max Cost Ġin Ġ 1 Ġuntil Ġdata [ position ]. cost ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . total Cost . setTextColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . color Over Sp ent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġholder . total Cost . text Ġ= ĠCurrency Helper . getString ( data [ position ]. cost ) ĊĊĠĠĠĠĠĠĠ Ġval Ġshort List Ġ= Ġdata [ position ]. description . split ("\ n ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġshort List . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . short List [ i ]. text Ġ= Ġshort List [ i ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Cart ( cart : ĠShop ping Cart ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" add Ġcart Ġ${ cart . name }") ĊĠĠĠĠĠĠĠ Ġdata . add ( 0 , Ġcart ) ĊĠĠĠĠĠĠĠ Ġnotify Item Inserted ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Cart At ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" remove Ġcart Ġat Ġ$ position ") ĊĠĠĠĠĠĠĠ Ġdata . remove At ( position ) ĊĠĠĠĠĠĠĠ Ġnotify Item Removed ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Data ( cart s : ĠList < Shopping Cart >) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" add Ġ${ cart s . size } Ġcart s ") ĊĠĠĠĠĠĠĠ Ġdata . addAll ( cart s ) ĊĠĠĠĠĠĠĠ Ġdata . sortBy Descending Ġ{ Ġs Ġ-> Ġif Ġ( s . createdAt Ġ> Ġ 0 ) Ġs . createdAt Ġelse Ġs . id Ġ} ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Shopping Cart Adapter " ĊĠĠĠ Ġ} Ċ }