package Ġcom . ar au jo . j ordan . shop ify mobile summer challenge 2 0 1 9 . adapter ĊĊ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . ar au jo . j ordan . shop ify mobile summer challenge 2 0 1 9 . R Ċ import Ġcom . ar au jo . j ordan . shop ify mobile summer challenge 2 0 1 9 . contract . Collection List Contract Ċ import Ġcom . ar au jo . j ordan . shop ify mobile summer challenge 2 0 1 9 . contract . Collection List Presenter Ċ import Ġcom . ar au jo . j ordan . shop ify mobile summer challenge 2 0 1 9 . contract . Product List Contract Ċ import Ġcom . ar au jo . j ordan . shop ify mobile summer challenge 2 0 1 9 . contract . Product List Presenter Ċ import Ġcom . ar au jo . j ordan . shop ify mobile summer challenge 2 0 1 9 . model . Collection Ċ import Ġcom . ar au jo . j ordan . shop ify mobile summer challenge 2 0 1 9 . model . Product Ċ import Ġcom . eth anh ua . skeleton . RecyclerView Skeleton Screen Ċ import Ġcom . eth anh ua . skeleton . Skeleton Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġjava . text . NumberFormat Ċ Ċ class ĠCollection Adapter ( ctx : ĠContext , Ġcol ID : ĠString , Ġrec View : ĠRecyclerView ) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Collection Adapter . ViewHolder >(), ĊĠĠĠ ĠCollection List Contract . View , ĠProduct List Contract . View Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġcol Id : ĠString Ġ= Ġcol ID ĊĠĠĠ Ġprivate Ġvar Ġitem List Ġ= Ġmutable ListOf < Product >() ĊĠĠĠ Ġprivate Ġvar Ġcol Presenter Ġ= ĠCollection List Presenter () ĊĠĠĠ Ġprivate Ġvar Ġprod Presenter Ġ= ĠProduct List Presenter () ĊĠĠĠ Ġprivate Ġvar Ġrec View : ĠRecyclerView Ġ= Ġrec View ĊĊĠĠĠ Ġprivate Ġvar Ġskeleton Cards : ĠRecyclerView Skeleton Screen ? Ġ= Ġnull Ġ// fancy Ġloading ĊĊĠĠĠ Ġprivate Ġval Ġpic asso Ġ= ĠPic asso . get () ĊĊĠĠĠ Ġclass ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcard _ title Ġ= Ġview . findViewById ( R . id . card _ title ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġval Ġcard _ price Ġ= Ġview . findViewById ( R . id . card _ price ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġval Ġcard _ image Ġ= Ġview . findViewById ( R . id . card _ image ) Ġas ĠImageView ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . col Presenter . attach ( this ) ĊĠĠĠĠĠĠĠ Ġthis . col Presenter . resume ( ctx ) ĊĠĠĠĠĠĠĠ Ġthis . prod Presenter . attach ( this ) ĊĠĠĠĠĠĠĠ Ġthis . prod Presenter . resume ( ctx ) ĊĠĠĠĠĠĠĠ Ġthis . col Presenter . fetch Col Data ( 1 , Ġcol Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġposition . to Long () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠCollection Adapter . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . card _ custom collection , Ġparent , Ġfalse ) Ġas ĠView ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitem List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠCollection Adapter . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprod Ġ= Ġitem List [ position ] ĊĊĠĠĠĠĠĠĠ Ġholder . card _ title . text Ġ= Ġprod . title ĊĠĠĠĠĠĠĠ ĠLog . d (" REQUEST ", Ġ" fetch Image () ") ĊĠĠĠĠĠĠĠ Ġpic asso ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( prod . image . src ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( holder . card _ image ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġmax Price Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġvar Ġmin Price Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġfor Ġ( variant Ġin Ġprod . variants ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprice Ġ= Ġvariant . price . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( max Price Ġ== Ġ 0 f Ġ&& Ġmin Price Ġ== Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Price Ġ= Ġprice ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Price Ġ= Ġprice ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( max Price Ġ< Ġprice ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Price Ġ= Ġprice ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( min Price Ġ> Ġprice ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Price Ġ= Ġprice ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġformatter Ġ= ĠNumber Format . getC urrency Instance () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( max Price Ġ> Ġmin Price ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . card _ price . text Ġ= Ġformatter . format ( min Price ) Ġ+ Ġ" Ġ~ Ġ" Ġ+ Ġformatter . format ( max Price ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . card _ price . text Ġ= Ġformatter . format ( max Price ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Loading ( isLoading : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isLoading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskeleton Cards Ġ= ĠS keleton . bind ( rec View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. adapter ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( R . layout . card _ custom collection _ skeleton ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. shim mer ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskeleton Cards ?. hide () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow ErrorMessage ( error : ĠString ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Col Success ( list : ĠList < Collection > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġids Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval ĠmaxSize Ġ= Ġif Ġ( list !!. size Ġ>= Ġ 3 ) Ġ 2 Ġelse Ġlist . size Ġ- Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. maxSize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġids Ġ+= Ġlist [ i ]. product _ id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ<= ĠmaxSize Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġids Ġ+= Ġ"," ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprod Presenter . fetch Prod Data ( 1 , Ġids ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Products Success ( list : ĠList < Product > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem List . addAll ( list !! ) ĊĠĠĠĠĠĠĠ Ġshow Loading ( false ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ ĠLog . d (" fetch Products Success ()", Ġ" Ġitems Ġon Ġlist Ġ" Ġ+ Ġitem List . size ) ĊĠĠĠ Ġ} Ċ Ċ }