package Ġvn . t iki . android . android home test Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġkotlinx . android . synt hetic . main . recycle view _ item . view .* Ċ import Ġvn . t iki . android . android home test . data . api . response . Deal Ċ import Ġandroid . os . Count Down Timer Ċ import Ġandroid . os . Handler Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġcom . squareup . pic asso . Pic asso Provider Ċ import Ġvn . t iki . android . android home test . util . getImage Ċ import Ġjava . util .* ĊĊ Ċ class ĠRe cycler Adapter ( private Ġval Ġcontext : ĠContext ) Ġ: ĠRecyclerView . Adapter < Recycler Adapter . ViewHolder >() Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġm Items : ĠMutable List < Deal >? Ġ= Ġmutable ListOf < Deal >() ĊĠĠĠĠĠĠĠ Ġvar Ġm List Timer : ĠMutable List < Count Down Timer >? Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCOUNT DOWN _ INTERVAL : ĠLong Ġ= Ġ 1 0 0 0 ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( layout Inflater . inflate ( R . layout . recycle view _ item , Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Items ?. size Ġ?: Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Item ( list : ĠList < Deal > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Items ?. addAll ( list !!. to Mutable List ()) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġm Items ?. get ( position ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ ĠPic asso . get (). load ( item . product Thumbnail ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . abc _ item _ background _ holo _ dark ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( holder . imageView ) ĊĠĠĠĠĠĠĠ Ġholder . txt Name . text Ġ= Ġitem . product Name ĊĠĠĠĠĠĠĠ Ġholder . txt Price . text Ġ= Ġitem . product Price . toString () ĊĠĠĠĠĠĠĠ Ġif Ġ( holder . timer Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . timer !!. cancel (); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġperiod Ġ= Ġitem . endDate . time Ġ- ĠCalendar . getInstance (). time . time ĊĊĊĠĠĠĠĠĠĠ Ġholder . timer Ġ= Ġobject Ġ: ĠCount Down Timer ( period , ĠCOUNT DOWN _ INTERVAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Finish () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Remove Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Items !!. remove ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tick ( millis Until Finished : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Recycler Adapter ", Ġ" on Tick Ġ$ millis Until Finished ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . txt Count down . text Ġ= Ġ( millis Until Finished . div ( 1 0 0 0 )). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠĠĠĠĠ Ġholder . timer ?. let Ġ{ Ġ Ġm List Timer ?. add ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From RecyclerView ( re cyclerView : ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Detached From RecyclerView ( re cyclerView ) ĊĠĠĠĠĠĠĠ Ġm List Timer . or Empty (). forEach Ġ{ Ġtimer Ġ-> Ġtimer . cancel () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Detached From Window ( holder : ĠViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Detached From Window ( holder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtimer : ĠCount Down Timer ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval ĠimageView : ĠImageView Ġ= Ġview . imageView ĊĠĠĠĠĠĠĠ Ġval Ġtxt Name : ĠTextView Ġ= Ġview . tv _ name ĊĠĠĠĠĠĠĠ Ġval Ġtxt Price : ĠTextView Ġ= Ġview . tv _ price ĊĠĠĠĠĠĠĠ Ġval Ġtxt Count down : ĠTextView Ġ= Ġview . tv _ countdown !! ĊĠĠĠ Ġ} Ċ Ċ }