package Ġcom . andre ade ll ap ort a . li vec urrency . ui Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . andre ade ll ap ort a . li vec urrency . R Ċ import Ġcom . andre ade ll ap ort a . li vec urrency . databinding . Activity Currency Binding Ċ import Ġcom . andre ade ll ap ort a . li vec urrency . di . ViewModel Factory Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġkotlinx . android . synt hetic . main . activity _ currency .* Ċ import Ġkotlinx . android . synt hetic . main . item _ rate . view .* Ċ import Ġjava . util .* ĊĊ Ċ class ĠCurrency Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Currency Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠRate List ViewModel ĊĊĠĠĠ Ġprivate Ġvar Ġerror Snackbar : ĠSn ackbar ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ currency ) ĊĠĠĠĠĠĠĠ Ġbinding . rates List . layout Manager Ġ= ĠLinearLayoutManager ( this , ĠRecyclerView . VERTICAL , Ġfalse ) ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this , ĠViewModel Factory ( this )). get ( Rate List ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ ĠviewModel . errorMessage . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ-> Ġif ( errorMessage Ġ!= Ġnull ) Ġshow Error ( errorMessage ) Ġelse Ġhide Error () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Error (@ String Res ĠerrorMessage : Int ){ ĊĠĠĠĠĠĠĠ Ġerror Snackbar Ġ= ĠSn ackbar . make ( binding . root , ĠerrorMessage , ĠSn ackbar . LENGTH _ IN DEFIN ITE ) ĊĠĠĠĠĠĠĠ Ġerror Snackbar ?. setAction ( R . string . retry , ĠviewModel . error ClickListener ) ĊĠĠĠĠĠĠĠ Ġerror Snackbar ?. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Error (){ ĊĠĠĠĠĠĠĠ Ġerror Snackbar ?. dismiss () ĊĠĠĠ Ġ} Ċ } Ċ