package Ġcom . book store . ui . main . fragment . book Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . St agger ed Grid LayoutManager Ċ import Ġcom . book store . R Ċ import Ġcom . book store . constant . Ret rofit Status Ċ import Ġcom . book store . model . response . book . Book Ċ import Ġcom . book store . ui . book . Detail Book Activity Ċ import Ġcom . book store . ui . main . Main ViewModel Ċ import Ġcom . book store . ui . main . fragment . book . adapter . Book Adapter Ċ import Ġcom . book store . ui . main . fragment . book . adapter . Book Item Listener Ċ import Ġcom . book store . ui . search . Search Book Activity Ċ import Ġcom . book store . utils . View Helper . hide Ċ import Ġcom . book store . utils . View Helper . show Ċ import Ġkotlinx . android . synt hetic . main . fragment _ book .* Ċ import Ġorg . k oin . android . view model . ext . android . shared ViewModel Ċ import Ġorg . k oin . android . view model . ext . android . viewModel Ċ Ċ class ĠBook Fragment Ġ: ĠFragment (), ĠBook Item Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmain ViewModel : ĠMain ViewModel Ġby Ġshared ViewModel () ĊĠĠĠ Ġprivate Ġval Ġbook ViewModel : ĠBook ViewModel Ġby ĠviewModel () ĊĠĠĠ Ġprivate Ġval Ġbook Adapter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠBook Adapter ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ= Ġinflater . inflate ( R . layout . fragment _ book , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbook ViewModel . book Response . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe _ refresh _ layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading . hide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRet rofit Status . SUCCESS Ġ-> Ġit . list ?. let Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaceholder _ empty . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler view . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbook Adapter . setData ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRet rofit Status . UN AUTHORIZ ED Ġ-> Ġmain ViewModel . logout ( require Activity ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler view . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaceholder _ empty . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbutton _ search . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( require Context (), ĠSearch Book Activity :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġswipe _ refresh _ layout . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook ViewModel . get Book () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cycler view . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġbook Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠSt agger ed Grid LayoutManager ( 2 , ĠSt agger ed Grid LayoutManager . VERTICAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġbook ViewModel . get Book () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( book : ĠBook ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( require Context (), ĠDetail Book Activity :: class . java ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent . putExtra ( Detail Book Activity . DATA , Ġbook )) ĊĠĠĠ Ġ} Ċ } Ċ