package Ġcom . example . di aper tracker databinding Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġcom . example . di aper tracker databinding . databinding . Activity Main Binding Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġ// Initialize Ġthe Ġbinding Ġobject ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Main Binding ĊĊĠĠĠ Ġ// A Ġvar Ġto Ġuse Ġinside Ġour Ġlayout ĊĠĠĠ Ġvar Ġdi aper Header Ġ= Ġ"-- ĠDi aper ĠTracker Ġ-- " ĊĊĠĠĠ Ġprivate Ġvar Ġdi aper Count Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ// set ContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġ// The Ġdata Binding Ġway ! ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġ// Set Ġclick Ġlisteners ĊĠĠĠĠĠĠĠ Ġbinding . main Activity Bt Add . setOnClickListener Ġ{ Ġadd New Di aper () Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . main Activity Bt Clear . setOnClickListener Ġ{ Ġclear () Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// set Ġthe Ġvalue Ġof Ġmy Activity Ġin Ġthe Ġbinding Ġobject ĊĠĠĠĠĠĠĠ Ġbinding . my Activity Ġ= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd New Di aper (){ ĊĠĠĠĠĠĠĠ Ġvar Ġtime Of Change Ġ= Ġ" 0 0 : 0 0 " ĊĠĠĠĠĠĠĠ Ġif Ġ( binding . main Activity Et Time . text . toString () Ġ!= Ġ""){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Of Change Ġ= Ġbinding . main Activity Et Time . text . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġnew Di aper Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Activity Rb Dirty . isChecked Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Di aper Ġ= Ġ"- ĠA Ġdirty Ġdi aper Ġhas Ġbeen Ġchanged Ġat Ġ$ time Of Change " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdi aper Header Ġ= Ġ" Dirty Ġdi aper Ġchanged !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Activity Rb W et . isChecked Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Di aper Ġ= Ġ"- ĠA Ġw et Ġdi aper Ġhas Ġbeen Ġchanged Ġat Ġ$ time Of Change " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdi aper Header Ġ= Ġ" W et Ġdi aper Ġchanged !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Di aper Ġ= Ġ"- ĠA Ġdry Ġdi aper Ġhas Ġbeen Ġchanged Ġat Ġ$ time Of Change " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdi aper Header Ġ= Ġ" D ry Ġdi aper Ġchanged !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . apply { invalidate All ()} ĊĊĠĠĠĠĠĠĠ Ġdi aper Count ++ ĊĊĠĠĠĠĠĠĠ Ġupdate Di aper List ( new Di aper ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Di aper List ( new Di aper : ĠString ){ ĊĠĠĠĠĠĠĠ Ġval Ġold Di apers Ġ= Ġbinding . main Activity Tv Di aper Changes . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġupdated Di apers Ġ= Ġ"$ old Di apers Ġ\ n $ new Di aper " ĊĊĠĠĠĠĠĠĠ Ġbinding . main Activity Tv Di aper Changes . text Ġ= Ġupdated Di apers ĊĠĠĠĠĠĠĠ Ġbinding . main Activity Tv Di aper Count . text Ġ= Ġ"$ di aper Count Ġtotal Ġdi apers Ġchanged ." ĊĠĠĠĠĠĠĠ Ġbinding . main Activity Et Time . setText ("") ĊĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclear (){ ĊĠĠĠĠĠĠĠ Ġbinding . main Activity Tv Di aper Changes . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġbinding . main Activity Tv Di aper Count . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġdi aper Count Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġdi aper Header Ġ= Ġ"-- ĠDi aper ĠTracker Ġ-- " ĊĠĠĠĠĠĠĠ Ġbinding . apply { invalidate All ()} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Keyboard (){ ĊĠĠĠĠĠĠĠ Ġval Ġimm Ġ= Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠ Ġimm . hide Soft Input From Window ( binding . main Activity Et Time . window Token , Ġ 0 ) ĊĠĠĠ Ġ} Ċ }