package Ġcom . mp article . example . h ig g ssh op sample app . fragments Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . mp article . MP article Ċ import Ġcom . mp article . example . h ig g ssh op sample app . R Ċ import Ġcom . mp article . example . h ig g ssh op sample app . activities . MainActivity Ċ import Ġcom . mp article . example . h ig g ssh op sample app . activities . Checkout Activity Ċ import Ġcom . mp article . example . h ig g ssh op sample app . adapters . Cart Items Adapter Ċ import Ġcom . mp article . example . h ig g ssh op sample app . databinding . Fragment Cart Binding Ċ import Ġcom . mp article . example . h ig g ssh op sample app . repositories . database . entities . Cart Item Entity Ċ import Ġcom . mp article . example . h ig g ssh op sample app . view models . Cart ViewModel Ċ Ċ class ĠCart Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Cart Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcart ViewModel : ĠCart ViewModel ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Cart Fragment " ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). set ActionBar Title (""); ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Cart Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġcart ViewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Provider ( this ). get ( Cart ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġbinding . root ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ ĠM Particle . getInstance ()?. log Screen (" View ĠMy ĠCart ") ĊĊĠĠĠĠĠĠĠ Ġ_ binding ?. rv Cart List ?. layout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġval Ġbtn CT A Ġ= Ġactivity ?. findViewById ( R . id . cart _ cta ) Ġas ĠButton ĊĊĠĠĠĠĠĠĠ Ġcart ViewModel . cart Sub total Price LiveData . observe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Lifecycle Owner , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġsub Total Price Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ binding ?. tv Cart Sub total Price ?. text Ġ= Ġ"$ ${ sub Total Price }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġcart ViewModel . cart Total LiveData . observe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Lifecycle Owner , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġtotal Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). update Bottom Nav Cart ButtonText ( total ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġcart ViewModel . cart Response LiveData . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġitems Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Size : Ġ" Ġ+ Ġitems ?. size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( items Ġ== Ġnull Ġ|| Ġitems . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ binding ?. tv Cart 0 ?. visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ binding ?. rv Cart List ?. visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ binding ?. tv Cart Sub total Price ?. text Ġ= ĠgetString ( R . string . detail _ price ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn CT A . is Clickable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn CT A . alpha Ġ= Ġ 0 . 3 F ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). update Bottom Nav Cart ButtonText ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Observer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn CT A . setBackground Resource ( R . drawable . rounded _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ binding ?. tv Cart 0 ?. visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ binding ?. rv Cart List ?. visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠCart Items Adapter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . list Ġ= Ġitems . to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcart ViewModel . getTotal Cart Items ( this . require Context ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ binding ?. rv Cart List ?. let Ġ{ ĠlistView Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list View . adapter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistView . adapter Ġ= Ġadapter . also Ġ{ Ġadapter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . on Item Clicked Ġ= Ġ{ Ġcart Item , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentity Ġ= ĠCart Item Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsku Ġ= Ġcart Item . sku , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġcart Item . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġcart Item . label , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ= Ġcart Item . imageUrl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġcart Item . color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġcart Item . size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprice Ġ= Ġcart Item . price , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquantity Ġ= Ġcart Item . quantity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcart ViewModel . remove From Cart ( require Context (), Ġentity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . list . remove At ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcart ViewModel . getSub total Price ( this . require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn CT A . is Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn CT A . alpha Ġ= Ġ 1 . 0 F ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn CT A . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , ĠCheckout Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). activity Result Launch ?. launch ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġcart ViewModel . get Cart Items ( this . require Context ()) ĊĠĠĠ Ġ} Ċ }