package Ġcom . b ens ad iku . mv vm kotlin . ui . quotes Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġcom . b ens ad iku . mv vm kotlin . R Ċ import Ġcom . b ens ad iku . mv vm kotlin . data . Quote Ċ import Ġcom . b ens ad iku . mv vm kotlin . utilities . Injector Utils Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġjava . lang . StringBuilder Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġinitialize UI () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize UI (){ ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠInject or Utils . provide Quotes ViewModel Factory () ĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= ĠViewModel Providers . of ( this , factory ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( Quotes ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . get Quotes (). observe ( this , ĠObserver Ġ{ Ġquotes Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstringBuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquotes . forEach Ġ{ Ġquote Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ("$ quote \ n \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView _ quotes . text Ġ= ĠstringBuilder . toString () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbutton _ add _ quote . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquote Ġ= ĠQuote ( edit Text _ quote . text . toString (), edit Text _ author . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . add Quotes ( quote ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text _ quote . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text _ author . setText ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ