package Ġcom . al wan . b aj ps ub mission 3 . ui . discover . tv show Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . paging . Paged List Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . al wan . b aj ps ub mission 3 . R Ċ import Ġcom . al wan . b aj ps ub mission 3 . adapter . Tv Show Adapter Ċ import Ġcom . al wan . b aj ps ub mission 3 . data . source . local . entity . Tv Show Entity Ċ import Ġcom . al wan . b aj ps ub mission 3 . databinding . Fragment Tv Show Binding Ċ import Ġcom . al wan . b aj ps ub mission 3 . ui . detail . Detail Activity Ċ import Ġcom . al wan . b aj ps ub mission 3 . utils . Margin Item Decoration Ċ import Ġcom . al wan . b aj ps ub mission 3 . utils . Sort Utils . RANDOM Ċ import Ġcom . al wan . b aj ps ub mission 3 . utils . Sort Utils . V OTE _ BEST Ċ import Ġcom . al wan . b aj ps ub mission 3 . utils . Sort Utils . V OTE _ W OR ST Ċ import Ġcom . al wan . b aj ps ub mission 3 . utils . ViewModel Factory Ċ import Ġcom . al wan . b aj ps ub mission 3 . vo . Resource Ċ import Ġcom . al wan . b aj ps ub mission 3 . vo . Status Ċ Ċ class ĠT v Show Fragment Ġ: ĠFragment (), ĠT v Show Adapter . Tv Show Callback Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Tv Show Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĠĠĠ Ġprivate Ġvar Ġsort Ġ= ĠV OTE _ BEST ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtv Show Adapter : ĠT v Show Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtv Show ViewModel : ĠT v Show ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtv Show Observer : ĠObserver < Resource < Paged List < Tv Show Entity >>> ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Tv Show Binding . inflate ( layout Inflater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsetup ViewModel () ĊĠĠĠĠĠĠĠ Ġsetup Adapter () ĊĠĠĠĠĠĠĠ Ġsetup RecyclerView () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu . clear () ĊĠĠĠĠĠĠĠ Ġrequire Activity (). menu Inflater . inflate ( R . menu . menu _ main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġwhen ( sort ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠV OTE _ BEST Ġ-> Ġmenu . find Item ( R . id . menu _ sort _ best ). isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠV OTE _ W OR ST Ġ-> Ġmenu . find Item ( R . id . menu _ sort _ wor st ). isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR AN DOM Ġ-> Ġmenu . find Item ( R . id . menu _ sort _ random ). isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ sort _ best Ġ-> Ġsort Ġ= ĠV OTE _ BEST ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ sort _ wor st Ġ-> Ġsort Ġ= ĠV OTE _ W OR ST ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ sort _ random Ġ-> Ġsort Ġ= ĠR AN DOM ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ language Ġ-> ĠstartActivity ( Intent ( Settings . ACTION _ LOCAL E _ SETTINGS )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġitem . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġtv Show ViewModel . get Tv Shows ( sort ). observe ( view Lifecycle Owner , Ġtv Show Observer ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠViewModel Factory . getInstance ( require Context ()) ĊĠĠĠĠĠĠĠ Ġtv Show ViewModel Ġ= ĠViewModel Provider ( this , Ġfactory )[ Tv Show ViewModel :: class . java ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġtv Show Adapter Ġ= ĠT v Show Adapter ( this ) ĊĠĠĠĠĠĠĠ Ġshow Loading ( true ) ĊĊĠĠĠĠĠĠĠ Ġtv Show Observer Ġ= ĠObserver < Resource < Paged List < Tv Show Entity >>> Ġ{ Ġtv Shows Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tv Shows Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( tv Shows . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġshow Loading ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Show Adapter . submit List ( tv Shows . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Error ĠLoading ĠT v ĠShow ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtv Show ViewModel . get Tv Shows ( V OTE _ BEST ). observe ( view Lifecycle Owner , Ġtv Show Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( binding . rv Tv Show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( Margin Item Decoration ( 1 6 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġtv Show Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Loading ( state : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . progress Bar Tv Show . visibility Ġ= Ġif Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Tv Show Click ( tv Show Entity : ĠT v Show Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( require Activity (), ĠDetail Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Detail Activity . EXTRA _ ID , Ġtv Show Entity . id ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Detail Activity . EXTRA _ TYPE , Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} Ċ }