package Ġtk . la ure nf rost . holo dos . view Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . google . gson . Gson Ċ import Ġkotlinx . android . synt hetic . main . board _ list _ activity .* Ċ import Ġtk . la ure nf rost . holo dos . Ho lo dos Application Ċ import Ġtk . la ure nf rost . holo dos . R Ċ import Ġtk . la ure nf rost . holo dos . adapter . Items Adapter Ċ import Ġtk . la ure nf rost . holo dos . domain . entity . Board Ċ import Ġtk . la ure nf rost . holo dos . domain . entity . Item Ċ import Ġtk . la ure nf rost . holo dos . interfaces . On ItemClickListener Ċ import Ġtk . la ure nf rost . holo dos . interfaces . On Item Form Submit Listener Ċ import Ġtk . la ure nf rost . holo dos . repository . Item Repository Ċ import Ġtk . la ure nf rost . holo dos . room . App Database Ċ import Ġtk . la ure nf rost . holo dos . view . fragment . Item Form Dialog Fragment Ċ import Ġtk . la ure nf rost . holo dos . view model . Items ViewModel Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠBoard List Activity Ġ: ĠAppCompatActivity (), ĠOn ItemClickListener , ĠOn Item Form Submit Listener Ġ{ ĊĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġitems ViewModel : ĠItems ViewModel ; ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġapp Database : ĠApp Database ; ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġitem Repository : ĠItem Repository ; ĊĊĠĠĠ Ġlateinit Ġvar Ġboard Id : ĠString ĊĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . board _ list _ activity ) ĊĠĠĠĠĠĠĠ Ġ( application Ġas ĠHo lo dos Application ). application Component . inject ( this ); ĊĊĠĠĠĠĠĠĠ Ġboard Id Ġ= Ġintent . getString Extra (" board Id ") !! ĊĊĊĠĠĠĠĠĠĠ Ġrefresh List . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems ViewModel . refresh Items () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd New Item . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠItem Form Dialog Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString (" board Id ", Ġboard Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show ( support FragmentManager , Ġ" custom ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠItems Adapter ( this ) ĊĠĠĠĠĠĠĠ Ġtodo List . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġtodo List . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġitems ViewModel . get Board Items ( Board ( board Id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( this , ĠObserver Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . refresh Items ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Edit Clicked ( item : ĠItem ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠItem Form Dialog Fragment () ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġargs . putString (" item ", Ġgson . toJson ( item )) ĊĠĠĠĠĠĠĠ Ġargs . putString (" board Id ", Ġboard Id ) ĊĠĠĠĠĠĠĠ Ġdialog . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠ Ġdialog . show ( support FragmentManager , Ġ" custom ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Delete Clicked ( item : ĠItem ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Repository . delete Item ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Form Submit ( item : ĠItem ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item . id Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Repository . create Item ( item ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Repository . update Item ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ