package Ġcom . q if an . kg ank . ui Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . or h ano but . logger . Logger Ċ import Ġcom . q if an . kg ank . R Ċ import Ġcom . q if an . kg ank . api . Network State Ċ import Ġcom . q if an . kg ank . ui . adapter . KG ank Adapter Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ Ċ class ĠK G ank Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ// di ĊĠĠĠ Ġprivate Ġval Ġm ViewModel : ĠK G ank ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠK G ank Adapter ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġre cycler view . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠK G ank Adapter () ĊĠĠĠĠĠĠĠ Ġre cycler view . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġm ViewModel . set Category (" Android ") ĊĠĠĠĠĠĠĠ Ġm ViewModel . g ank Content List . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d (" g ank Ġcontent Ġlist ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġm ViewModel . load Status . observe ( this , ĠObserver Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Q if an ====== =", Ġ" W TF ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork State . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Q if an ====== =", Ġ" SUCCESS ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspinner . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork State . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Q if an ====== =", Ġ" LOADING ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspinner . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork State . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Q if an ====== =", Ġ" ERROR ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspinner . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) Ċ // ĠĠĠĠĠĠĠ Ġbutton . setOnClickListener Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . fetch G ank Content () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġm ViewModel . spinner . observe ( this , ĠObserver Ġ{ Ġvisible Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġspinner . visibility Ġ= Ġif Ġ( visible ) ĠView . VISIBLE Ġelse ĠView . GONE Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . visibility Ġ= Ġif Ġ(! visible ) ĠView . VISIBLE Ġelse ĠView . GONE Ċ // ĠĠĠĠĠĠĠ Ġ}) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġm ViewModel . g ank Content LiveData . observe ( this , ĠObserver Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġit . results ?. get ( 0 ). toString () Ċ // ĠĠĠĠĠĠĠ Ġ}) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġm ViewModel . sn ackBar . observe Event ( this ) Ġ{ Ġcontent Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( textView , Ġcontent , ĠSn ackbar . LENGTH _ IN DEFIN ITE ). show () Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ