package Ġcom . stripe . sample store Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Image Button Ċ import Ġandroid . widget . TextView Ċ Ċ import Ġjava . util . Currency Ċ Ċ class ĠStore Adapter Ġinternal Ġconstructor ( ĊĠĠĠ Ġactivity : ĠStore Activity , ĊĠĠĠ Ġprivate Ġval Ġprice Multiplier : ĠFloat Ċ ) Ġ: ĠRecyclerView . Adapter < Store Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġ// ĠSt oring Ġan Ġactivity Ġhere Ġonly Ġso Ġwe Ġcan Ġlaunch Ġfor Ġresult ĊĠĠĠ Ġprivate Ġval Ġactivity : ĠActivity ĊĠĠĠ Ġprivate Ġval Ġcurrency : ĠCurrency ĊĊĠĠĠ Ġprivate Ġval Ġquantity Ordered : ĠInt Array ĊĠĠĠ Ġprivate Ġvar Ġtotal Ordered : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġtotal Items Changed Listener : ĠTotal Items Changed Listener ĊĊĠĠĠ Ġclass ĠViewHolder ( ĊĠĠĠĠĠĠĠ Ġpolling Layout : ĠView , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcurrency : ĠCurrency , ĊĠĠĠĠĠĠĠ Ġadapter : ĠStore Adapter ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( polling Layout ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġemoji TextView : ĠTextView Ġ= Ġpolling Layout . findViewById ( R . id . tv _ emoji ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġprice TextView : ĠTextView Ġ= Ġpolling Layout . findViewById ( R . id . tv _ price ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġquantity TextView : ĠTextView Ġ= Ġpolling Layout . findViewById ( R . id . tv _ quantity ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġadd Button : ĠImage Button Ġ= Ġpolling Layout . findViewById ( R . id . tv _ plus ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġremove Button : ĠImage Button Ġ= Ġpolling Layout . findViewById ( R . id . tv _ minus ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Position : ĠInt Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Button . setOnClickListener Ġ{ Ġadapter . bump Item Quantity ( m Position , Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Button . setOnClickListener Ġ{ Ġadapter . bump Item Quantity ( m Position , Ġfalse ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Hidden ( hidden : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvisibility Ġ= Ġif Ġ( hidden ) ĠView . IN VISIBLE Ġelse ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemoji TextView . visibility Ġ= Ġvisibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprice TextView . visibility Ġ= Ġvisibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquantity TextView . visibility Ġ= Ġvisibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Button . visibility Ġ= Ġvisibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Button . visibility Ġ= Ġvisibility ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Emoji ( emoji Unicode : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemoji TextView . text Ġ= ĠStore Utils . get Emoji By Unicode ( emoji Unicode ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Price ( price : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprice TextView . text Ġ= ĠStore Utils . get Price String ( price . to Long (), Ġcurrency ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Quantity ( quantity : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquantity TextView . text Ġ= Ġquantity . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Position ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Position Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . activity Ġ= Ġactivity ĊĠĠĠĠĠĠĠ Ġtotal Items Changed Listener Ġ= Ġactivity ĊĠĠĠĠĠĠĠ Ġ// ĠNote : Ġour Ġsample Ġbackend Ġassumes ĠUSD Ġas Ġcurrency . ĠThis Ġcode Ġwould Ġbe ĊĠĠĠĠĠĠĠ Ġ// Ġotherwise Ġfunctional Ġif Ġyou Ġswitched Ġthat Ġassumption Ġon Ġthe Ġbackend Ġand Ġpassed ĊĠĠĠĠĠĠĠ Ġ// Ġcurrency Ġcode Ġas Ġa Ġparameter . ĊĠĠĠĠĠĠĠ Ġcurrency Ġ= ĠCurrency . getInstance (" USD ") ĊĠĠĠĠĠĠĠ Ġquantity Ordered Ġ= ĠInt Array ( E MO JI _ CL OTH ES . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbump Item Quantity ( index : ĠInt , Ġincrease : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ>= Ġ 0 Ġ&& Ġindex Ġ< Ġquantity Ordered . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( increase ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquantity Ordered [ index ] ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Ordered ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Items Changed Listener . on Total Items Changed ( total Ordered ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( quantity Ordered [ index ] Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquantity Ordered [ index ] -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Ordered -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Items Changed Listener . on Total Items Changed ( total Ordered ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== ĠE MO JI _ CL OTH ES . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . set Hidden ( true ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . set Hidden ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . set Emoji ( E MO JI _ CL OTH ES [ position ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . set Price ( get Price ( position )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . set Quantity ( quantity Ordered [ position ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . position Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠE MO JI _ CL OTH ES . size Ġ+ Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpolling View Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . store _ item , Ġparent , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( polling View , Ġcurrency , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġlaunch Purchase Activity With Cart () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcart Ġ= ĠStore Cart ( currency ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġquantity Ordered . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( quantity Ordered [ i ] Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcart . add Store Line Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Utils . get Emoji By Unicode ( E MO JI _ CL OTH ES [ i ]), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquantity Ordered [ i ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Price ( i ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġactivity . startActivity For Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Activity . create Intent ( activity , Ġcart ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStore Activity . PUR CH ASE _ REQUEST ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġclear Item Selections () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġquantity Ordered . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquantity Ordered [ i ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġtotal Items Changed Listener . on Total Items Changed ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Price ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( E MO JI _ PR ICES [ position ] Ġ* Ġprice Multiplier ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠTotal Items Changed Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Total Items Changed ( total Items : ĠInt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠE MO JI _ CL OTH ES Ġ= Ġint ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 1 F 4 5 5 , Ġ 0 x 1 F 4 5 6 , Ġ 0 x 1 F 4 5 7 , Ġ 0 x 1 F 4 5 8 , Ġ 0 x 1 F 4 5 9 , Ġ 0 x 1 F 4 5 A , Ġ 0 x 1 F 4 5 B , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 1 F 4 5 C , Ġ 0 x 1 F 4 5 D , Ġ 0 x 1 F 4 5 E , Ġ 0 x 1 F 4 5 F , Ġ 0 x 1 F 4 6 0 , Ġ 0 x 1 F 4 6 1 , Ġ 0 x 1 F 4 6 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠE MO JI _ PR ICES Ġ= Ġint ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 0 0 , Ġ 4 0 0 0 , Ġ 3 0 0 0 , Ġ 7 0 0 , Ġ 6 0 0 , Ġ 1 0 0 0 , Ġ 2 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 5 0 0 , Ġ 8 0 0 , Ġ 3 0 0 0 , Ġ 2 0 0 0 , Ġ 5 0 0 0 , Ġ 5 5 0 0 , Ġ 6 0 0 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ