package Ġcom . application . b mc . mv vm coroutine Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . application . b mc . mv vm coroutine . data . features . post . Post RecyclerView Adaptor Ċ import Ġcom . application . b mc . mv vm coroutine . view model . Post ViewModel Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġpost ViewModel : ĠPost ViewModel ĊĠĠĠ Ġlateinit Ġvar Ġre cyclerView Ġ: ĠRecyclerView ĊĠĠĠ Ġlateinit Ġvar Ġbtn _ click Ġ: Button ĊĠĠĠ Ġlateinit Ġvar Ġprogress _ circular Ġ: ProgressBar ĊĠĠĠ Ġlateinit Ġvar Ġadapter Ġ: Post RecyclerView Adaptor ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġpopulate IDs () ĊĊĠĠĠĠĠĠĠ Ġpost ViewModel Ġ= ĠViewModel Provider ( this ). get ( Post ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġpost ViewModel . post List . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . set Post List ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġpost ViewModel . loading . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġif ( it ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress _ circular . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress _ circular . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġpost ViewModel . errorMessage . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , it . toString (), Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĊĠĠĠĠĠĠĠ Ġbtn _ click . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost ViewModel . getPost From API () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpopulate IDs (){ ĊĠĠĠĠĠĠĠ Ġre cyclerView Ġ= ĠfindViewById ( R . id . recycler ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠPost RecyclerView Adaptor () ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġbtn _ click Ġ= ĠfindViewById ( R . id . btn _ click ) ĊĠĠĠĠĠĠĠ Ġprogress _ circular Ġ= ĠfindViewById ( R . id . progress _ circular ) ĊĠĠĠ Ġ} ĊĊ Ċ }