package Ġcom . ud acity . sh o est ore . screens . sh oe _ details Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġcom . ud acity . sh o est ore . R Ċ import Ġcom . ud acity . sh o est ore . databinding . Sh oe Detail Fragment Binding Ċ import Ġcom . ud acity . sh o est ore . models . Sh oe Ċ import Ġcom . ud acity . sh o est ore . screens . sh oe _ list . Shared ViewModel Ċ Ċ class ĠSh oe Detail Fragment : ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding Ġ: ĠSh oe Detail Fragment Binding ĊĠĠĠ Ġprivate Ġval Ġshared ViewModel : ĠShared ViewModel Ġby Ġactivity ViewModels () ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater , ĠR . layout . sh oe _ detail _ fragment , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġbinding . new sh oe Ġ= ĠSh oe () ĊĊĠĠĠĠĠĠĠ Ġ// Ġthis Ġbutton Ġcancel s Ġthe Ġaction Ġof Ġadding Ġa Ġnew Ġsh oe Ġand Ġgoes Ġto Ġthe ĠShop List ĊĠĠĠĠĠĠĠ Ġbinding . cancel Button . setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . find Nav Controller (). navigate ( Sh oe Detail Fragment Directions . to Shop Fragment Action ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġthis Ġbutton Ġadds Ġa Ġnew Ġsh oe Ġto Ġthe Ġlist Ġsh oe Ġin Ġthe Ġshared ViewModel , Ġafter , Ġthe Ġuser ĊĠĠĠĠĠĠĠ Ġ// Ġwill Ġnavigate Ġto Ġthe ĠShop Fragment Ġand Ġthe Ġlist Ġis Ġre created Ġincluding Ġthe Ġnew Ġsh oe ĊĠĠĠĠĠĠĠ Ġbinding . save Button . setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( notNull ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared ViewModel . add ( binding . new sh oe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . find Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSh oe Detail Fragment Directions . to Shop Fragment Action ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠA Ġmessage Ġis Ġshown Ġif Ġthe Ġuser Ġforgot Ġto Ġwrite Ġsome Ġinformation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġit Ġcould Ġbe Ġmore Ġflexible Ġor Ġspecific ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), " Missing Ġdata Ġto Ġcomplete ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclean _ data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġthis Ġfunction Ġchecks Ġif Ġall Ġthe Ġfields Ġare Ġnot Ġempty ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġnot Null (): ĠBoolean { ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . new sh oe ?. get Sh oe Name () Ġ!= Ġ"" Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . new sh oe ?. get Sh oe Company () Ġ!= Ġ"" Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . new sh oe ?. get Sh oe Size () Ġ!= Ġ 0 . 0 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . new sh oe ?. get Sh oe Desc () Ġ!= Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClean Ġall Ġthe Ġuser Ġinput Ġinformation Ġabout Ġthe Ġnew Ġsh oe ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġclean _ data (){ Ċ // ĠĠĠĠĠĠĠ Ġval Ġeditable _ texts Ġ: ĠList < EditText > Ġ= ĠlistOf ( binding . sh oe Name Edit t , Ġbinding . company Edit t , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . size Edit t , Ġbinding . size Edit t ) Ċ // ĠĠĠĠĠĠĠ Ġfor Ġ( view Ġin Ġeditable _ texts ){ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġview . setText ("") Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . new sh oe ?. Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Sh oe Name ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Sh oe Company ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Sh oe Size ( 0 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Sh oe Desc ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }