package Ġcom . example . mos hi app . fragments Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . example . mos hi app . R Ċ import Ġcom . example . mos hi app . databinding . Movie List Fragment Binding Ċ import Ġcom . example . mos hi app . adapters . Movie Adapter Ċ import Ġcom . example . mos hi app . viewModel . Movie ViewModel Ċ import Ġcom . skill box . json and ret rofit . utils . auto Cle ared Ċ Ċ class ĠMovie List Fragment Ġ: ĠFragment ( R . layout . movie _ list _ fragment ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠMovie List Fragment Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġprivate Ġvar Ġmovie Adapter : ĠMovie Adapter Ġby Ġauto Cle ared () ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠMovie ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġprivate Ġval Ġargs : ĠMovie List Fragment Args Ġby Ġnav Args () ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ// ĠLog . d (" Title ToAdd ", Ġ" Args Ġ${ args . title }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit List () ĊĠĠĠĠĠĠĠ Ġget Movie List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠMovie List Fragment Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrv Ġ= Ġbinding . rv Movie List ĊĠĠĠĠĠĠĠ Ġmovie Adapter Ġ= ĠMovie Adapter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ-> Ġstart Detailed Movie Fragment ( getItem Position ( position )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( rv ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġmovie Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Detailed Movie Fragment ( id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠMovie List Fragment Directions . action Movie List Fragment To Movie Detailed ( id ) ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetItem Position ( position : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmovie Ġ= ĠviewModel . movie List . value ?. get ( position ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmovie ?. imdb ID . or Empty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Movie List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtitle Movie Ġ= Ġargs . title ĊĠĠĠĠĠĠĠ ĠviewModel . search ( title Ġ= Ġtitle Movie ) ĊĠĠĠĠĠĠĠ ĠviewModel . isLoading . observe ( view Lifecycle Owner ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . movie List . observe ( view Lifecycle Owner ) Ġ{ Ġmovies Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovie Adapter . update List ( movies ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }