package Ġcom . lf . esh aring Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . lf . esh aring . database . purchase . Purchase ViewModel Ċ import Ġcom . lf . esh aring . database . user . User ViewModel Ċ import Ġcom . lf . esh aring . databinding . Fragment Display Exp enses Binding Ċ Ċ class ĠDisplay Exp enses Fragment Ġ: ĠFragment (){ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Display Exp enses Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Purchase ViewModel : ĠPurchase ViewModel ĊĠĠĠ Ġlateinit Ġvar Ġadapter : ĠList Adapter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠPurchase ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Display Exp enses Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠList Adapter ( object : ĠList Adapter . ListView ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). invalidate Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= Ġbinding . re cyclerView ĊĠĠĠĠĠĠĠ Ġval Ġdivider Ġ= ĠDiv ider Item Decoration Ġ( context , ĠLinearLayoutManager ( context ). orientation ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( require Context ()) ĊĠĠĠĠĠĠĠ Ġre cyclerView . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . addItem Decoration ( divider ) ĊĊĠĠĠĠĠĠĠ Ġm Purchase ViewModel Ġ= ĠViewModel Provider ( this ). get ( Purchase ViewModel :: class . java ) ĊĊĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ Ġbinding !!. root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġm Purchase ViewModel . getAll Local Data (). observe ( view Lifecycle Owner , ĠObserver { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpurchase Ġ-> Ġadapter . setData ( purchase ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmenu Id Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this :: adapter . isInitialized Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . selected ItemCount () Ġ> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . menu . delete _ menu ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . menu . menu _ main ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( menu Id , Ġmenu ) ĊĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġ== ĠR . id . menu _ delete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Purchase ViewModel . delete P urchases ( adapter . getSelected List ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠImplement Ġlogic Ġto Ġdelete Ġall Ġusers ĊĠĠĠ Ġprivate Ġfun Ġdelete All Purchase () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( require Context ()) ĊĠĠĠĠĠĠĠ Ġbuilder . set Positive Button (" Yes ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Purchase ViewModel . delete All Purchase ( User ViewModel . username , ĠUser ViewModel . password ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Successfully Ġremoved Ġeverything ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuilder . set Negative Button (" No ") Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĠĠĠĠĠĠĠ Ġbuilder . setTitle (" Delete Ġeverything Ġ? ") ĊĠĠĠĠĠĠĠ Ġbuilder . setMessage (" Are Ġyou Ġsure Ġto Ġremove Ġeverything Ġ? ") ĊĠĠĠĠĠĠĠ Ġbuilder . create (). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} Ċ Ċ }