package Ġcom . example . movies app . ui . movies . detail fragment Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . bump tech . glide . G lide Ċ Ċ import Ġcom . example . movies app . R Ċ import Ġcom . example . movies app . backend . data .` object `. Movie Details Ċ import Ġcom . example . movies app . backend . data . api . Movie DB Client Ċ import Ġcom . example . movies app . backend . data . api . Movie DB Interface Ċ import Ġcom . example . movies app . backend . data . api . POST ER _ PATH Ċ import Ġcom . example . movies app . backend . data . repository . Network State Ċ import Ġcom . example . movies app . ui . movies . view model . Movie Detail ViewModel Ċ import Ġkotlinx . android . synt hetic . main . fragment _ detail _ movies .* Ċ import Ġkotlin . math . log Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ*/ Ċ class ĠDetail Movies Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdetail ViewModel Ġ: ĠMovie Detail ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmovie Detail Repository : ĠMovie Detail Repository ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ detail _ movies , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMOV IE ĠID Ġ- ĠDI K IR IM KAN ĠM EL AL UI ĠINTENT ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ Ġ= Ġarguments ?. getInt (" id ", Ġ 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAPI ĠSERVICE ĊĠĠĠĠĠĠĠ Ġval Ġapi Ġ: ĠMovie DB Interface Ġ= ĠMovie DB Client . getClient () ĊĠĠĠĠĠĠĠ Ġmovie Detail Repository Ġ= ĠMovie Detail Repository ( api ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠVIEW ĠMODEL ĊĠĠĠĠĠĠĠ Ġdetail ViewModel Ġ= Ġget ViewModel ( id !! ) ĊĊĠĠĠĠĠĠĠ Ġdetail ViewModel . movie Details . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind UI ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNET WORK ĠSTATE ĊĠĠĠĠĠĠĠ Ġdetail ViewModel . network State . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġprogress Ġbar Ġsa at ĠAPI Ġdi pro ses Ġdan Ġk et ika Ġse les ai ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress _ detail . visibility Ġ= Ġif Ġ( it Ġ== ĠNetwork State . LOADING ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtext ĠERROR Ġsa at Ġg agal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror _ messages _ detail . visibility Ġ= Ġif Ġ( it Ġ== ĠNetwork State . ERROR ) Ġ ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġbind ĠUI Ġke ĠLAY OUT ĊĠĠĠĠĠĠĠ Ġfun Ġbind UI ( items Ġ: ĠMovie Details ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ name _ movie . text Ġ= Ġitems . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ score _ movie . text Ġ= Ġitems . rating . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ date _ movie . text Ġ= Ġitems . release Date ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ genre _ movie . text Ġ= Ġitems . status ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ dec _ movie . text Ġ= Ġitems . overview ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrating Bar _ movie . progress Ġ= Ġitems . rating . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbind Ġposter Ġusing ĠGL IDE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposter Url Ġ= ĠPOST ER _ PATH Ġ+ Ġitems . poster Path ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( poster Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( tv _ img _ movie ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġback drop Url Ġ= ĠPOST ER _ PATH Ġ+ Ġitems . backdrop Path ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( backdrop Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( tv _ poster _ movie ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġview Ġmodel ĊĠĠĠĠĠĠĠ Ġfun Ġget ViewModel ( id : ĠInt ): ĠMovie Detail ViewModel { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠViewModel Provider ( this , Ġobject Ġ: ĠViewModel Provider . Factory { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel ?> Ġcreate ( model Class : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMovie Detail ViewModel ( movie Detail Repository , Ġid ) Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) [ Movie Detail ViewModel :: class . java ] ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ