package Ġcom . the apache 6 4 . lean corn . ui . feature . detail Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lean back . app . Details Support Fragment Ċ import Ġandroidx . lean back . widget .* Ċ import Ġandroidx . lifecycle . as LiveData Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġco il . image Loader Ċ import Ġco il . request . Image Request Ċ import Ġcom . the apache 6 4 . lean corn . R Ċ import Ġcom . the apache 6 4 . lean corn . data . remote . Movie Ċ import Ġcom . the apache 6 4 . lean corn . ui . feature . home . Home Fragment Directions Ċ import Ġcom . the apache 6 4 . lean corn . ui . feature . home . Post er Presenter Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġkotlinx . coroutines . launch Ċ Ċ @ Android EntryPoint Ċ class ĠDetail Fragment Ġ: ĠDetails Support Fragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠACTION _ PLAY Ġ= Ġ 1 L ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠviewModel : ĠDetail ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . args . as LiveData (). observe ( view Lifecycle Owner ) Ġ{ Ġ_ args Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ args ?. let Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind Args ( args ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . toast . as LiveData (). observe ( view Lifecycle Owner ) Ġ{ Ġstring Res Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), Ġstring Res , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . navigate To Detail . as LiveData (). observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDetail Fragment Directions . action Detail To Detail ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . category , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . movie ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset On Item View Clicked Listener Ġ{ Ġ_, Ġitem , Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ PLAY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Play Clicked () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Undefined Ġaction ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMovie Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Movie Clicked ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Args ( args : ĠDetail Fragment Args ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠBind Ġto Ġdetail ĊĠĠĠĠĠĠĠ Ġval Ġmovie Ġ= Ġargs . movie ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġmovie . name ĊĊĠĠĠĠĠĠĠ Ġ// ĠMeta ĊĠĠĠĠĠĠĠ Ġval Ġrows Adapter Ġ= Ġcreate Rows Adapter () ĊĠĠĠĠĠĠĠ Ġval Ġdetails Overview Row Ġ= ĠDetails Overview Row ( movie ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Request Ġ= ĠImage Request . Builder ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. data ( movie . imageUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. image Loader ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute ( image Request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. drawable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ apply . image Drawable Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠActions ĊĠĠĠĠĠĠĠ Ġval Ġaction Adapter Ġ= ĠArray Object Adapter () ĊĠĠĠĠĠĠĠ Ġaction Adapter . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ PLAY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . detail _ action _ play ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġdetails Overview Row . actions Adapter Ġ= Ġaction Adapter ĊĠĠĠĠĠĠĠ Ġrows Adapter . add ( details Overview Row ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMore Ġlike Ġthis ĊĠĠĠĠĠĠĠ Ġval Ġmore Like This Adapter Ġ= ĠArray Object Adapter ( Post er Presenter ()) ĊĠĠĠĠĠĠĠ Ġfor Ġ( related Movie Ġin Ġargs . category . movies ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmore Like This Adapter . add ( related Movie ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmore Like This Header Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHeader Item ( getString ( R . string . detail _ header _ more _ like _ this )) ĊĠĠĠĠĠĠĠ Ġrows Adapter . add ( List Row ( more Like This Header , Ġmore Like This Adapter )) ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠFinally , Ġset Ġthe Ġadapter ĊĠĠĠĠĠĠĠ Ġthis . adapter Ġ= Ġrows Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Rows Adapter (): ĠArray Object Adapter Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrow Presenter Selector Ġ= ĠClass Presenter Selector () ĊĠĠĠĠĠĠĠ Ġval Ġdetails Overview Row Presenter Ġ= ĠFull Width Details Overview Row Presenter ( Detail Presenter ()) ĊĠĠĠĠĠĠĠ Ġrow Presenter Selector . addClass Presenter ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDetails Overview Row :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetails Overview Row Presenter ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrow Presenter Selector . addClass Presenter ( List Row :: class . java , ĠList Row Presenter ()) ĊĠĠĠĠĠĠĠ Ġreturn ĠArray Object Adapter ( row Presenter Selector ) ĊĠĠĠ Ġ} Ċ }