package Ġcom . workshop . workshop . ui . main . adapter Ċ Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġcom . workshop . workshop . R Ċ import Ġcom . workshop . workshop . extension . inflate Ċ import Ġcom . workshop . workshop . ui . main . Ui Object Model Ċ import Ġkotlinx . android . synt hetic . main . item _ object . view .* Ċ Ċ class ĠObject Adapter Ġ: ĠRecyclerView . Adapter < Object Adapter . ViewHolder >() Ġ{ ĊĠĠĠ Ġ/* ĊĠĠĠ Ġ***************************************************************** ************************ ******* ĊĠĠĠ Ġ** ĠPrivate Ġfield ĊĠĠĠ Ġ***************************************************************** ************************ ******* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġitems : ĠArrayList < Ui Object Model > Ġ= ĠArrayList () ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ***************************************************************** ************************ ******* ĊĠĠĠ Ġ** ĠPublic Ġmethod ĊĠĠĠ Ġ***************************************************************** ************************ ******* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġclear Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġitems . clear () ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpopulate Object ( data : ĠList < Ui Object Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġitems . addAll ( data ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ***************************************************************** ************************ ******* ĊĠĠĠ Ġ** ĠRecyclerView . Adapter < Object Adapter . ViewHolder >() Ġimplementation ĊĠĠĠ Ġ***************************************************************** ************************ ******* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( items [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġitems . count () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinfl ated View Ġ= Ġparent . inflate ( R . layout . item _ object , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( in fl ated View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSimple Ġclass Ġused Ġas Ġplace Ġholder ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠViewHolder ( v : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( v ), ĠView . OnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġitem : ĠUi Object Model ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġshould Show Extra : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġ***************************************************************** ************************ *** ĊĠĠĠĠĠĠĠ Ġ** ĠPublic Ġmethod ĊĠĠĠĠĠĠĠ Ġ***************************************************************** ************************ *** ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠUi Object Model ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . item Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . should Show Extra Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Data () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġ***************************************************************** ************************ *** ĊĠĠĠĠĠĠĠ Ġ** ĠView . OnClickListener Ġimplementation ĊĠĠĠĠĠĠĠ Ġ***************************************************************** ************************ *** ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Show Extra Ġ= Ġ! should Show Extra ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Extra Data () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġ***************************************************************** ************************ *** ĊĠĠĠĠĠĠĠ Ġ** ĠPrivate Ġmethod ĊĠĠĠĠĠĠĠ Ġ***************************************************************** ************************ *** ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġshow Data () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( should Show Extra ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . item Object _ main Info . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . item Object _ extra Info . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . item Object _ main Info . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . item Object _ extra Info . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġpopulate Data () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . with ( item View . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( it . thumbnail Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . ic _ loading ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( item View . item Object _ imageView ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . item Object _ textView . text Ġ= Ġit . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġpopulate Extra Data () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . with ( item View . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( it . url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . ic _ loading ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( item View . item Object _ imageView _ full ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . item Object _ textView _ full . text Ġ= Ġit . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }