package Ġcom . lf g . mi ac ell . fragments Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . lf g . mi ac ell . databinding . Fragment Detail Binding Ċ import Ġcom . lf g . mi ac ell . functions . hide Keyboard Ċ import Ġcom . lf g . mi ac ell . view models . Detail ViewModel Ċ Ċ class ĠDetail Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠDetail ViewModel Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding Ġ: ĠFragment Detail Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Detail Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠviewModel . onCreate DB ( binding . layout Detail . context ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ ĠviewModel . onStart Detail ( require Context ()) ĊĊĠĠĠĠĠĠĠ ĠviewModel . setView Image ( require Context (), Ġbinding . img Detail , Ġ"") ĊĊĠĠĠĠĠĠĠ ĠviewModel . product . observe ( view Lifecycle Owner , Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Id . setText ( result . id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Brand . setText ( result . brand ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Description . setText ( result . description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Price . setText ( result . price . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . setView Image ( require Context (), binding . img Detail , Ġbinding . txt Detail Id . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Id . request Focus () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . back . observe ( view Lifecycle Owner , Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbinding . btn Detail Edit . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . set Mode (" edit ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . img Detail . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . setView Image ( require Context (), binding . img Detail , Ġbinding . txt Detail Id . text . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . btn Detail Save . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( viewModel . mode . value . toString ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" add " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . set Product Data ( binding . txt Detail Id . text . toString (), binding . txt Detail Brand . text . toString (), binding . txt Detail Description . text . toString (), binding . txt Detail Price . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . addItem ( binding . layout Detail ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . set Mode (" view ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" edit " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . set Product Data ( binding . txt Detail Id . text . toString (), binding . txt Detail Brand . text . toString (), binding . txt Detail Description . text . toString (), binding . txt Detail Price . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . edit Item ( binding . layout Detail ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . set Mode (" view ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . btn Detail Cancel . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( viewModel . mode . value Ġ== Ġ" add ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . set Mode (" view ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Detail Delete . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ ĠviewModel . de tele Item ( binding . layout Detail ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . mode . observe ( view Lifecycle Owner , Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result . toString ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" view " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Id . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Brand . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Description . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Price . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Detail Cancel . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Detail Save . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Detail Edit . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Detail Delete . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" add " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Id . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Brand . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Description . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Price . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Detail Cancel . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Detail Save . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Detail Edit . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Detail Delete . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" edit " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Id . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Brand . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Description . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . txt Detail Price . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Detail Cancel . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Detail Save . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Detail Edit . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Detail Delete . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} Ċ Ċ }