package Ġcom . example . book my show app Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . recyclerview . widget . Default Item Animator Ċ import Ġcom . example . book my show app . data . remote . Movie Database Ċ import Ġcom . example . book my show app . data . remote . Movie Repository Imp Ċ import Ġcom . example . book my show app . util . Main ViewModel Factory Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ Ċ class Ġ ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : Main ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġsetup ViewModel () ĊĠĠĠĠĠĠĠ Ġobserve ViewModel () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġsetup ViewModel () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Progress () ĊĠĠĠĠĠĠĠ ĠviewModel = ViewModel Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Main ViewModel Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Helper ( this ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMovie Repository Imp ( Movie Database . getInstance ( this ). movie Dao (), Ret rofit Builder . build Service ()) ĊĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) [ Main ViewModel :: class . java ] ĊĠĠĠĠĠĠĠ ĠviewModel . onCreate () ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġobserve ViewModel () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . movie Response . observe ( this , ĠObserver Ġ{ Ġit : ĠMovie Response Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Movies ( it . results Ġas ĠArrayList < Movie >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . error Response . observe ( this , ĠObserver Ġ{ Ġit : ĠString Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow ErrorMessage ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Movies ( movies : ĠArrayList < Movie >) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġre cyclerView . visibility = View . VISIBLE ĊĠĠĠĠĠĠĠ Ġre cyclerView . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . item Animator = Default Item Animator () ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter = Movie Adapter ( movies ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġshow Progress () Ġ{ ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġhide Progress (){ ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility = View . GONE ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġshow ErrorMessage ( errorMessage : ĠString ?) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġerror View . visibility = View . VISIBLE ĊĠĠĠĠĠĠĠ Ġerror View . text = errorMessage ĊĠĠĠ Ġ} Ċ Ċ }