package Ġcom . pol ipp o . fil me sf lix . view ĊĊ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . pol ipp o . fil me sf lix . R Ċ import Ġcom . pol ipp o . fil me sf lix . model . Movie Ċ import Ġcom . pol ipp o . fil me sf lix . view model . Movie List ViewModel Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmovie List ViewModel : ĠMovie List ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġmovie List ViewModel Ġ= ĠViewModel Provider . New Instance Factory (). create ( Movie List ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġmovie List ViewModel . init () ĊĊĠĠĠĠĠĠĠ Ġinit Observer () ĊĠĠĠĠĠĠĠ Ġloading Visibility ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Observer () Ġ{ ĊĠĠĠĠĠĠĠ Ġmovie List ViewModel . movies List . observe ( this , Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( list . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate List ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Visibility ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopulate List ( list : ĠList < Movie > ){ ĊĠĠĠĠĠĠĠ Ġmovie List . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Fixed Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠMov ies Adapter ( list ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġloading Visibility ( isLoading : ĠBoolean ){ ĊĠĠĠĠĠĠĠ Ġprogress _ bar . visibility Ġ= Ġif ( isLoading ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠ Ġ} Ċ }