package Ġgo . de yu . mv vm learn . main Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġgo . de yu . mv vm learn . R Ċ import Ġgo . de yu . mv vm learn . add note . Add Edit Note Activity Ċ import Ġgo . de yu . mv vm learn . data . Note Ċ import Ġgo . de yu . mv vm learn . data . Note Database Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġorg . k oin . android . ext . android . inject Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġval Ġm Note ViewModel : ĠNote ViewModel Ġby Ġview Models () ĊĠĠĠ Ġval ĠTAG Ġ= Ġ" MainActivity " ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġre cycler _ view . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġre cycler _ view . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= Note Adapter () ĊĠĠĠĠĠĠĠ Ġadapter . listener Ġ= Ġobject Ġ: ĠNote Adapter . On ItemClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Click ( note : ĠNote ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Item Click ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ MainActivity , Add Edit Note Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Add Edit Note Activity . EXTRA _ ID , note . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cycler _ view . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġm Note ViewModel . all Notes . observe ( this , Ġobject Ġ: Observer < List < Note >> { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonChanged ( t : ĠList < Note > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( t ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbtn _ add . setOnClickListener Ġ{ ĠstartActivity ( Intent ( this , Add Edit Note Activity :: class . java )) Ġ} ĊĠĠĠĠĠĠĠ Ġbtn _ delete . setOnClickListener Ġ{ Ġm Note ViewModel . delete All Note () Ġ} ĊĠĠĠĠĠĠĠ ĠItem Touch Helper ( object Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Touch Helper . Simple Callback ( 0 , ĠItem Touch Helper . LEFT Ġor ĠItem Touch Helper . RIGHT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Move ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠRecyclerView . ViewHolder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Position Ġ= ĠviewHolder . adapter Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote At Ġ= Ġadapter . get Note At ( adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Note ViewModel . delete Note ( note At ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}). attach To RecyclerView ( recycler _ view ) ĊĠĠĠ Ġ} Ċ Ċ }