package Ġcom . real it ix . nect ar . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . observe Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . ui . setup With Nav Controller Ċ import Ġcom . real it ix . nect ar . R Ċ import Ġcom . real it ix . nect ar . util . Generic Adapter Ċ import Ġcom . real it ix . nect ar . database . entity . Re ce ipe Ċ import Ġcom . real it ix . nect ar . databinding . Fragment Re ce ipe Binding Ċ import Ġcom . real it ix . nect ar . databinding . Fragment Re ce ip es Binding Ċ import Ġcom . real it ix . nect ar . fragment . dialog . EditText Dialog Fragment Ċ import Ġcom . real it ix . nect ar . repository . Re ce ipe Repository Ċ import Ġcom . real it ix . nect ar . repository . String Key Repository Ċ import Ġcom . real it ix . nect ar . repository . String KeyValue Repository Ċ import Ġcom . real it ix . nect ar . util . Recycler ItemClickListener Ċ import Ġcom . real it ix . nect ar . util . Single Line Item ViewHolder Ċ import Ġcom . real it ix . nect ar . view model . Re ce ipe List ViewModel Ċ import Ġcom . real it ix . nect ar . view model . Repository ViewModel Factory Ċ Ċ class ĠRe ce ip es Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Re ce ip es Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠRe ce ipe List ViewModel Ġby Ġview Models ( ĊĠĠĠĠĠĠĠ Ġfactory Producer Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRepository ViewModel Factory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRe ce ipe List ViewModel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRe ce ipe Repository ( require Context ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Key Repository ( require Context ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString KeyValue Repository ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠGeneric Adapter < Single Line Item ViewHolder , ĠRe ce ipe > ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Re ce ip es Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding . coll ap sing Toolbar Layout . setup With Nav Controller ( binding . toolbar , Ġfind Nav Controller ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet ĠRecyclerView ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠGeneric Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġv : ĠViewGroup Ġ-> ĠSingle Line Item ViewHolder . create ( v ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġholder , Ġrece ipe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . text . text Ġ= Ġrece ipe . getName () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . icon . setImage Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ receipt _ black _ 2 4 dp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġbinding . re cyclerView . has Fixed Size () ĊĠĠĠĠĠĠĠ Ġbinding . re cyclerView . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ ĠviewModel . re ce ip es . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . setData ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . re cyclerView . add On Item Touch Listener ( Recycler ItemClickListener ( require Context (), Ġbinding . re cyclerView , Ġobject : ĠRe cycler ItemClickListener . On ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Click ( view : ĠView , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrece ipe Ġ= Ġadapter . get At Position ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠRe ce ip es Fragment Directions . action Re ce ip es To Single ( re ce ipe . uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . find Nav Controller (). navigate ( action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ})) ĊĊĊĠĠĠĠĠĠĠ Ġbinding . fab . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEditText Dialog Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Nom Ġde Ġla Ġrec ette ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEditText Dialog Fragment . On Validate Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Validate ( dialog : ĠEditText Dialog Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrece ipe Uuid Ġ= ĠviewModel . create Re ce ipe ( dialog . getText ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠRe ce ip es Fragment Directions . action Re ce ip es To Single ( re ce ipe Uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( action ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). show ( parent FragmentManager , Ġ" create _ re ce ipe ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ