package Ġcom . challenge . it unes . adapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . challenge . it unes . data . model . Reco Movies Response Result Ċ import Ġcom . challenge . it unes . databinding . Item Trend ing Movie Binding Ċ import Ġcom . challenge . it unes . utilities . extension .* Ċ import Ġcom . challenge . it unes . utilities . open In Browser Ċ import Ġcom . challenge . it unes . utilities . random ize Color Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ class ĠRe co Movie Adapter ( private Ġval Ġcontext : ĠContext ): ĠRecyclerView . Adapter < Reco Movie Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm DataList Ġ= ĠlistOf < Reco Movies Response Result >() ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( private Ġval Ġbind : ĠItem Trend ing Movie Binding ): ĠRecyclerView . ViewHolder ( bind . root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind Item ( data : ĠRe co Movies Response Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind . movie Logo . load With Corner Radius ( data . art work Url 1 0 0 , Ġ 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Show Ġcustom Ġplaceholder Ġif Ġimage Ġurl Ġis Ġempty ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data . art work Url 1 0 0 . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Custom Placeholder ( bind , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ ${ data . track Price }". also Ġ{ Ġbind . movie Price . text Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind . movie Category . text Ġ= Ġdata . primary Genre Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind . movie Desc . text Ġ= Ġdata . short Desc Ġ?: Ġdata . long Desc ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind . movie Name . text Ġ= Ġdata . track Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data . see More . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind . movie See More . g one () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind . movie See More . visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind . movie See More . set Safe OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen In Browser ( context , Ġdata . see More ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind . root . set Safe OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen In Browser ( context , Ġdata . see More ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠItem Trend ing Movie Binding . inflate ( LayoutInflater . from ( parent . context ), Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġm DataList [ position ] ĊĠĠĠĠĠĠĠ Ġholder . bind Item ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm DataList . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Gets Ġthe Ġinitial s Ġof Ġthe Ġmovie Ġtitle Ġand Ġapp ends Ġthe Ġartist Ġbelow ĊĠĠĠ Ġ// Also Ġgenerates Ġa Ġrandom Ġbackground Ġcolor Ġto Ġreduce Ġthe Ġprobability ĊĠĠĠ Ġ// of Ġplaceholder Ġrepet ition . ĊĠĠĠ Ġprivate Ġfun Ġshow Custom Placeholder ( bind : ĠItem Trend ing Movie Binding , Ġdata : ĠRe co Movies Response Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbind . movie Logo . invisible () ĊĠĠĠĠĠĠĠ Ġbind . movie Logo Placeholder . visible () ĊĠĠĠĠĠĠĠ Ġval Ġplaceholder Ġ= Ġ"${ data . track Name ?. get Initial Letters () }\ n \ n BY :\ n ${ data . artist Name ?. get Initial Letters () }" ĊĠĠĠĠĠĠĠ Ġbind . movie Logo Placeholder . text Ġ= Ġplaceholder ĊĠĠĠĠĠĠĠ Ġbind . movie Logo Placeholder . set BackgroundColor ( Context Compat . getColor ( context , Ġrandomize Color ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetData ( data : ĠList < Reco Movies Response Result >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġre co Diff Util Ġ= ĠRe co Diff Util ( m DataList , Ġdata ) ĊĠĠĠĠĠĠĠ Ġval Ġre co Diff Result Ġ= ĠDiff Util . calculate Diff ( re co Diff Util ) ĊĠĠĠĠĠĠĠ Ġm DataList Ġ= Ġdata ĊĠĠĠĠĠĠĠ Ġre co Diff Result . dispatch Updates To ( this ) ĊĠĠĠ Ġ} Ċ Ċ }