package Ġcom . dream it . android quiz . quiz list . adapters Ċ Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . dream it . android quiz . R Ċ import Ġcom . dream it . android quiz . quiz list . model . Quiz Item Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġkotlinx . android . synt hetic . main . qu izz es _ item . view .* ĊĊ Ċ class ĠQu izz es Adapter ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlistener : ĠQu izz es Adapter . On Qu izz es Adapter Listener Ċ ) Ġ: ĠRecyclerView . Adapter < Qu izz es Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġqu izz es : ĠMutable List < Quiz Item > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġvar ĠisLoading Added Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . qu izz es _ item , Ġparent , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( item View , Ġqu izz es , Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . setup Qu izz es ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġqu izz es . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset Qu izz es ( new Qu izz es : ĠList < Quiz Item >) Ġ{ ĊĠĠĠĠĠĠĠ Ġclear () ĊĠĠĠĠĠĠĠ Ġadd All ( new Qu izz es ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd All ( new Qu izz es : ĠList < Quiz Item >) Ġ{ ĊĠĠĠĠĠĠĠ Ġnew Qu izz es . forEach Ġ{ Ġquiz Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( qu izz es . map Ġ{ Ġit . id Ġ}. contains ( quiz . id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace ( quiz ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( quiz ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ ĠisLoading Added Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġwhile Ġ( item Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove ( getItem ( 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd ( quiz : ĠQu iz Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġqu izz es . add ( quiz ) ĊĠĠĠĠĠĠĠ Ġnotify Item Inserted ( qu izz es . size Ġ- Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġremove ( quiz : ĠQu iz Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġqu izz es . indexOf ( quiz ) ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqu izz es . remove At ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Removed ( position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreplace ( quiz : ĠQu iz Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġremove ( qu izz es . first Ġ{ Ġit . id Ġ== Ġquiz . id Ġ}) ĊĠĠĠĠĠĠĠ Ġadd ( quiz ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetItem ( position : ĠInt ): ĠQu iz Item Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġqu izz es [ position ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Quiz In Qu izz es ( quiz : ĠQu iz Item ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġqu izz es . map Ġ{ Ġit . id Ġ}. contains ( quiz . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠView , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġqu izz es : ĠList < Quiz Item >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġlistener : ĠOn Qu izz es Adapter Listener ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġitem Cl Ġ= Ġview . cl _ qu izz es _ item ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġname Tv Ġ= Ġview . tv _ qu izz es _ item _ name ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġimage Iv Ġ= Ġview . iv _ qu izz es _ item _ image ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsp ons ored Tv Ġ= Ġview . tv _ qu izz es _ item _ sp ons ored ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġsetup Qu izz es ( position : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquiz Ġ= Ġqu izz es [ position ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Tv . text Ġ= Ġquiz . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquiz . main Photo ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . url . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( it . url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( image Iv ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsp ons ored Tv . visibility Ġ= Ġif Ġ( quiz . sp ons ored ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Cl . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Quiz Clicked ( quiz . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Qu izz es Adapter Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Quiz Clicked ( id : ĠLong ) ĊĠĠĠ Ġ} Ċ }