package Ġcom . n emo . t mdb . view Ċ Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ 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 Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ import Ġcom . n emo . t mdb . R Ċ import Ġcom . n emo . t mdb . model . ClickListener Ċ import Ġcom . n emo . t mdb . model . Fav Ċ import Ġcom . n emo . t mdb . model . Fav DB Ċ import Ġcom . n emo . t mdb . model . Movies Response Ċ import Ġcom . n emo . t mdb . model . Movies Response . Movies Ċ import Ġcom . n emo . t mdb . utils . Utils Ċ import Ġkotlinx . coroutines .* Ċ Ċ class ĠMov ies Adapter ( item Clicked Cb : ĠClick Listener , Ġstar Clicked Cb : ĠClick Listener ) Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġval ĠTAG : ĠString Ġ= Ġ" Adapter " ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Item Callback : ĠClick Listener ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Star Callback : ĠClick Listener ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Movies Ġ= ĠArrayList < Movies Response . Movie >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġm Item Callback Ġ= Ġitem Clicked Cb ĊĠĠĠĠĠĠĠ Ġm Star Callback Ġ= Ġstar Clicked Cb ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Movies ( resp : ĠMov ies ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( resp Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( movie Ġin Ġresp . results !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Movies . add ( movie ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear Movies () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Movies . clear () ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMovie ViewHolder . create ( parent , Ġm Item Callback , Ġm Star Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġm Movies . size ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġ( holder Ġas ĠMovie ViewHolder ). item View . context ĊĠĠĠĠĠĠĠ Ġvar Ġimage _ url : ĠString Ġ= ĠUtils . get Img Root () Ġ+ Ġm Movies [ position ]?. backdrop ĊĠĠĠĠĠĠĠ ĠLog . d (" Adapter ", Ġ" Image Ġurl : Ġ"+ image _ url ) ĊĠĠĠĠĠĠĠ Ġ( holder ). m Movies Title TextView . text Ġ= Ġm Movies [ position ]. title ĊĠĠĠĠĠĠĠ ĠG lide . with ( context ). as Bitmap (). load ( image _ url ). apply ( RequestOptions (). center Crop ()). into (( holder ). m Movies Post er ImageView ) ĊĠĠĠĠĠĠĠ Ġ( holder ). m Movies Released TextView . text Ġ= Ġm Movies [ position ]. release _ date ĊĠĠĠĠĠĠĠ Ġ( holder ). m Movies Rating TextView . text Ġ= Ġcontext . getString ( R . string . item _ rating ) Ġ+ Ġm Movies [ position ]. vote _ av . toString () ĊĠĠĠĠĠĠĠ Ġ( holder ). m Movies Pop ularity TextView . text Ġ= Ġcontext . getString ( R . string . item _ pop ularity ) Ġ+ Ġm Movies [ position ]. pop ularity . toString () ĊĠĠĠĠĠĠĠ Ġ( holder ). m Movie Star ImageView . setImage Resource ( R . drawable . ic _ star _ border _ black _ 2 4 dp ) ĊĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfav : ĠF av ? Ġ= ĠF av DB . getInstance ( context )?. fav Dao ()?. getF av ( m Movies [ position ]. id !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fav Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Scope (). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( holder ). m Movie Star ImageView . setImage Resource ( R . drawable . ic _ star _ black _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ( holder ). m Movie Star ImageView . setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Adapter ", Ġ" Clicked Ġstar Ġon Ġposition Ġ"+ position . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Star Callback . onClick ( view , Ġm Movies [ position ]. id !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfav : ĠF av ? Ġ= ĠF av DB . getInstance ( context )?. fav Dao ()?. getF av ( m Movies [ position ]. id !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fav Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF av DB . getInstance ( context )?. fav Dao ()?. delete Fav ( fav !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Scope (). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( view Ġas ĠImageView ). setImage Resource ( R . drawable . ic _ star _ border _ black _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfav Ġ= ĠF av ( m Movies [ position ]. id !! , Ġm Movies [ position ]. title !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF av DB . getInstance ( context )?. fav Dao ()?. add Fav ( fav !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Scope (). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( view Ġas ĠImageView ). setImage Resource ( R . drawable . ic _ star _ black _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ( holder ). m Movie Item Layout . setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// on ClickListener . invoke ( view , Ġcategory ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Adapter ", Ġ" Clicked Ġon Ġitem Ġposition Ġ"+ position . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Item Callback . onClick ( view , Ġm Movies [ position ]. id !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠMovie ViewHolder ( item View : ĠView , Ġon ItemClickListener : ĠClick Listener , Ġon Star ClickListener : ĠClick Listener ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Movies Title TextView Ġ= ĠitemView . findViewById < TextView >( R . id . movie _ title ) !! ĊĠĠĠĠĠĠĠ Ġval Ġm Movies Post er ImageView Ġ= ĠitemView . findViewById < ImageView >( R . id . movie _ poster ) !! ĊĠĠĠĠĠĠĠ Ġval Ġm Movies Rating TextView Ġ= ĠitemView . findViewById < TextView >( R . id . movie _ rating ) !! ĊĠĠĠĠĠĠĠ Ġval Ġm Movies Released TextView Ġ= ĠitemView . findViewById < TextView >( R . id . release _ date ) !! ĊĠĠĠĠĠĠĠ Ġval Ġm Movies Pop ularity TextView Ġ= ĠitemView . findViewById < TextView >( R . id . pop ularity ) !! ĊĠĠĠĠĠĠĠ Ġval Ġm Movie Star ImageView Ġ= ĠitemView . findViewById < ImageView >( R . id . favorite ) !! ĊĠĠĠĠĠĠĠ Ġval Ġm Movie Item Layout Ġ= ĠitemView . findViewById < View >( R . id . item _ layout ) !! ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( parent : ĠViewGroup , Ġitem Clicked Cb : ĠClick Listener , Ġstar Clicked Cb : ĠClick Listener ): ĠMovie ViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMovie ViewHolder ( LayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . list _ item _ movie , Ġparent , Ġfalse ), Ġitem Clicked Cb , Ġstar Clicked Cb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }