package Ġtest e . ex emplo . com . game commerce . View . Cart čĊč Ċ import Ġandroid . content . Context č Ċ import Ġandroid . view . LayoutInflater č Ċ import Ġandroid . view . View č Ċ import Ġandroid . view . ViewGroup č Ċ import Ġandroid . widget . ImageView č Ċ import Ġandroid . widget . TextView č Ċ import Ġandroidx . appcompat . widget . AppCompat ImageView č Ċ import Ġandroidx . recyclerview . widget . RecyclerView č Ċ import Ġcom . bump tech . glide . G lide č Ċ import Ġio . reactivex . annotations . NonNull č Ċ import Ġtest e . ex emplo . com . game commerce . Model . Cart č Ċ import Ġtest e . ex emplo . com . game commerce . Model . Game Added To Cart č Ċ import Ġtest e . ex emplo . com . game commerce . Presenter . Cart . Cart Adapter Presenter č Ċ import Ġtest e . ex emplo . com . game commerce . R čĊč Ċ import Ġtest e . ex emplo . com . game commerce . Util . Money Util č Ċ import Ġtest e . ex emplo . com . game commerce . View . Main . MainActivity čĊčĊč Ċ class ĠCart Adapter ( private Ġvar Ġcontext : ĠContext ) Ġ: ĠRecyclerView . Adapter < Cart Adapter . ViewHolder >(), čĊĠĠĠ ĠI Cart Adapter View Ġ{ čĊčĊĠĠĠ Ġlateinit Ġvar Ġdata Changed : ĠData Changed Response čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcart Adapter Presenter : ĠCart Adapter Presenter čĊĠĠĠ Ġprivate Ġvar ĠviewHolder : ĠViewHolder ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcart Item : ĠGame Added To Cart čĊčĊĠĠĠ Ġinterface ĠData Changed Response Ġ{ čĊĠĠĠĠĠĠĠ Ġfun Ġon Data Change () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ NonNull čĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder (@ NonNull Ġparent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . cart _ item , Ġparent , Ġfalse ) čĊĠĠĠĠĠĠĠ Ġcart Adapter Presenter Ġ= ĠCart Adapter Presenter ( this ) čĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( view ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn ĠCart . items . size čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder (@ NonNull Ġholder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠ ĠviewHolder Ġ= Ġholder čĊĠĠĠĠĠĠĠ ĠviewHolder !!. setIs Re cycl able ( false ) čĊĠĠĠĠĠĠĠ Ġupdate Holder Views ( position ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġupdate Holder Views ( position : ĠInt ){ čĊĠĠĠĠĠĠĠ Ġif ( Cart . items . size Ġ<= Ġ 0 ){ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( context Ġas ĠMainActivity ). support FragmentManager . pop Back Stack () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġcart Item Ġ= ĠCart . items [ position ] čĊčĊĠĠĠĠĠĠĠ Ġset Holder Texts () čĊĠĠĠĠĠĠĠ Ġset Holder Image () čĊĠĠĠĠĠĠĠ Ġset Holder Click Listeners ( position ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġset Holder Texts () Ġ{ čĊĠĠĠĠĠĠĠ ĠviewHolder !!. itemName . text Ġ= Ġcart Item . game . name čĊĠĠĠĠĠĠĠ ĠviewHolder !!. item Price . text Ġ= ĠMoney Util . format Money ( cart Item . game . price Ġ* Ġcart Item . qty ) čĊĠĠĠĠĠĠĠ ĠviewHolder !!. quantity . text Ġ= Ġcart Item . qty . toString () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġset Holder Image () Ġ{ čĊĠĠĠĠĠĠĠ ĠG lide . with ( context ). load ( cart Item . game . image ). into ( view Holder !!. item Image ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġset Holder Click Listeners ( position : ĠInt ){ čĊĠĠĠĠĠĠĠ ĠviewHolder !!. add Quantity . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcart Adapter Presenter . add Cart Quantity ( position ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ ĠviewHolder !!. remove Quantity . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcart Adapter Presenter . remove Cart Quantity ( position ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġupdate Cart Quantity ( position : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠ Ġupdate Holder Views ( position ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġnotify Data Has Changed (){ čĊĠĠĠĠĠĠĠ Ġdata Changed . on Data Change () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ): ĠLong Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġposition . to Long () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġposition čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġinner Ġclass ĠViewHolder Ġconstructor ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġitem Image : ĠImageView Ġ= ĠitemView . findViewById ( R . id . item _ image ) čĊĠĠĠĠĠĠĠ Ġval Ġremove Quantity : ĠAppCompat ImageView Ġ= ĠitemView . findViewById ( R . id . remove _ quantity ) čĊĠĠĠĠĠĠĠ Ġval Ġadd Quantity : ĠAppCompat ImageView Ġ= ĠitemView . findViewById ( R . id . add _ quantity ) čĊĠĠĠĠĠĠĠ Ġval Ġitem Name : ĠTextView Ġ= ĠitemView . findViewById ( R . id . item _ name ) čĊĠĠĠĠĠĠĠ Ġval Ġitem Price : ĠTextView Ġ= ĠitemView . findViewById ( R . id . item _ price ) čĊĠĠĠĠĠĠĠ Ġvar Ġquantity : ĠTextView Ġ= ĠitemView . findViewById ( R . id . quantity ) čĊĠĠĠ Ġ} č Ċ }