package Ġio . se th cl ark . day 7 Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ// ĠA Ġfield Ġto Ġhold Ġa Ġreference Ġto Ġour Ġcounter Ġtext Ġview ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcount TextView : ĠTextView ĊĊĠĠĠ Ġ// ĠA Ġfield Ġto Ġhold Ġa Ġreference Ġto Ġour Ġview Ġmodel ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠMain ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġlayout Ġthat Ġwill Ġbe Ġdrawn Ġfor Ġthis ĠActivity ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠHere Ġwe Ġuse ĠViewModel Providers Ġto Ġget Ġa Ġreference Ġto Ġan Ġinstance Ġof ĊĠĠĠĠĠĠĠ Ġ// ĠMain ViewModel . Ġ ĠViewModel Providers Ġwill Ġcreate Ġand Ġcache Ġthe Ġcreated ĊĠĠĠĠĠĠĠ Ġ// Ġinstance Ġso Ġthat Ġsubsequent Ġrequests Ġfor ĠMain ViewModel Ġwill Ġreturn Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġsame Ġinstance . ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this ). get ( Main ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠHere Ġwe 're Ġsetting Ġup Ġan ĠObserver Ġto Ġobserve Ġchanges Ġto Ġthe Ġcounter ĊĠĠĠĠĠĠĠ Ġ// Ġheld Ġby ĠMain ViewModel . Ġ ĠAny time Ġthe Ġvalue Ġof Ġcounter Ġin Ġchanged Ġin Ġthe ĊĠĠĠĠĠĠĠ Ġ// ĠMain ViewModel Ġour ĠObserver Ġwill Ġbe Ġcalled Ġwith Ġthe Ġnew Ġvalue . ĊĠĠĠĠĠĠĠ ĠviewModel . counter . observe ( this , ĠObserver Ġ{ Ġcounter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen Ġour ĠObserver Ġis Ġcalled Ġwith Ġthe Ġupdated Ġcount Ġvalue Ġwe Ġwill Ġupdate Ġour ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUI Ġto Ġshow Ġthe Ġupdated Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount TextView . text Ġ= Ġcounter . toString () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssign Ġthe Ġviews Ġfrom Ġthe Ġlayout Ġto Ġclass Ġand Ġmethod Ġscoped Ġvariables ĊĠĠĠĠĠĠĠ Ġcount TextView Ġ= ĠfindViewById ( R . id . text view _ count ) ĊĠĠĠĠĠĠĠ Ġval Ġincrement Button Ġ= ĠfindViewById < Button >( R . id . button _ increment ) ĊĠĠĠĠĠĠĠ Ġval Ġdecrement Button Ġ= ĠfindViewById < Button >( R . id . button _ decrement ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠReset Ġthe Ġcount Ġwhen Ġthe Ġcounter Ġview Ġis Ġclicked ĊĠĠĠĠĠĠĠ Ġcount TextView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . reset Counter () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠIncrement Ġbutton ĠonClick ĊĠĠĠĠĠĠĠ Ġincrement Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . increment Counter () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠIncrement Ġbutton Ġon Long Click ĊĠĠĠĠĠĠĠ Ġincrement Button . setOn Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . increment Counter By 5 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠDec rement Ġbutton ĠonClick ĊĠĠĠĠĠĠĠ Ġdecrement Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . decrement Counter () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠDec rement Ġbutton Ġon Long Click ĊĠĠĠĠĠĠĠ Ġdecrement Button . setOn Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . decrement Counter By 5 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }