package Ġcom . air wal lex . android . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . air wal lex . android . R Ċ import Ġcom . air wal lex . android . Tracker Ċ import Ġcom . air wal lex . android . databinding . PaymentMethod Item Card Binding Ċ import Ġcom . air wal lex . android . databinding . PaymentMethod Space Item Binding Ċ import Ġcom . air wal lex . android . databinding . PaymentMethod Third Item Binding Ċ import Ġcom . air wal lex . android . model .* Ċ import Ġcom . air wal lex . android . setOn Single ClickListener Ċ import Ġjava . util .* Ċ Ċ internal Ġclass ĠPayment Methods Adapter ( ĊĠĠĠ Ġval Ġavailable Third Payment Types : ĠList < Payment MethodType >, ĊĠĠĠ Ġval Ġshould Show Card : ĠBoolean Ċ ) Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġselected Payment Consent : ĠPayment Consent ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġpayment Consent s Ġ= Ġmutable ListOf < Payment Consent >() ĊĠĠĠ Ġinternal Ġvar Ġlistener : ĠListener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġspace Count Ġ= Ġif Ġ( available Third Payment Types . isNotEmpty ()) Ġ 1 Ġelse Ġ 0 ĊĊĠĠĠ Ġinternal Ġfun ĠisEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpayment Consent s . isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġset Payment Consent s ( payment Consent s : ĠList < Payment Consent >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . payment Consent s . addAll ( payment Consent s ) ĊĠĠĠĠĠĠĠ Ġnotify Item Range Inserted ( item Count , Ġpayment Consent s . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġavailable Third Payment Types . size Ġ+ Ġ// Ġthird Ġpart Ġpayment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspace Count Ġ+ Ġ// Ġspace ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( should Show Card ) Ġpayment Consent s . size Ġelse Ġ 0 Ġ// Ġcard ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Third Position ( position ) Ġ-> ĠItem ViewType . Third Pay . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Space Position ( position ) Ġ-> ĠItem ViewType . Space . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠItem ViewType . Card . ordinal ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Third Position ( position : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġposition Ġ< Ġavailable Third Payment Types . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Space Position ( position : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( space Count Ġ> Ġ 0 ) Ġavailable Third Payment Types . size Ġ== Ġposition Ġelse Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( Item ViewType . values ()[ view Type ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem ViewType . Third Pay Ġ-> ĠThird Pay Holder ( parent . context , Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem ViewType . Space Ġ-> ĠSpace Holder ( parent . context , Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem ViewType . Card Ġ-> ĠCard Holder ( parent . context , Ġparent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( holder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠThird Pay Holder Ġ-> Ġholder . bind View ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSpace Holder Ġ-> Ġholder . bind View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCard Holder Ġ-> Ġholder . bind View ( position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Synt hetic ĊĠĠĠ Ġinternal Ġfun Ġdelete Payment Consent ( payment Consent : ĠPayment Consent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Position ( payment Consent )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpayment Consent s . remove ( payment Consent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Removed ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Synt hetic ĊĠĠĠ Ġinternal Ġfun Ġreset PaymentMethod ( payment Consent : ĠPayment Consent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Position ( payment Consent )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Changed ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Position ( payment Consent : ĠPayment Consent ): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpayment Consent s . indexOf First Ġ{ Ġit . id Ġ== Ġpayment Consent . id Ġ}. take If Ġ{ Ġit Ġ>= Ġ 0 Ġ} ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ+ Ġavailable Third Payment Types . size Ġ+ Ġspace Count ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Synt hetic ĊĠĠĠ Ġinternal Ġfun Ġget Payment Consent At Position ( position : ĠInt ): ĠPayment Consent Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpayment Consent s [ get Payment Consent Index ( position )] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Payment Consent Index ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġposition Ġ- Ġ( available Third Payment Types . size Ġ+ Ġspace Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠCard Holder ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġview Binding : ĠPayment Method Item Card Binding ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( view Binding . root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconstructor ( context : ĠContext , Ġparent : ĠViewGroup ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Method Item Card Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind View ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpayment Consent Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpayment Consent s [ position Ġ- Ġavailable Third Payment Types . size Ġ- Ġspace Count ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= Ġpayment Consent . payment Method Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcard Ġ= Ġmethod . card Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . tv Card Info . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% s ĠâĢ¢ âĢ¢ âĢ¢ âĢ¢ Ġ% s ", Ġcard . brand ?. uppercase ( Locale . ROOT ), Ġcard . last 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( card . brand ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCard Brand . Vis a . type Ġ-> Ġview Binding . iv Card Icon . setImage Resource ( R . drawable . air wal lex _ ic _ visa ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCard Brand . Master Card . type Ġ-> Ġview Binding . iv Card Icon . setImage Resource ( R . drawable . air wal lex _ ic _ master card ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . rl Card . setOn Single ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Payment Consent ?. id Ġ!= Ġpayment Consent . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Payment Consent Ġ= Ġpayment Consent ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTracker . track ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTracker Request . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Brand ( card . brand ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Card Bin ( card . bin ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Code ( Tracker Request . Tracker Code . ON _ SWITCH _ METHOD ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Payment Consent ?. let Ġ{ Ġlistener ?. on Payment Consent Click ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . iv Card Checked . visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Payment Consent ?. id Ġ== Ġpayment Consent . id ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠThird Pay Holder ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġview Binding : ĠPayment Method Third Item Binding ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( view Binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconstructor ( context : ĠContext , Ġparent : ĠViewGroup ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Method Third Item Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind View ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpayment MethodType Ġ= Ġavailable Third Payment Types [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . payment Method Icon . setImage Resource ( payment MethodType . drawable Res ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . payment MethodName . text Ġ= Ġpayment MethodType . displayName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . payment Method Checked . visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Payment Consent ?. payment Method ?. type Ġ== Ġpayment MethodType ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOn Single ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Payment Consent Ġ= ĠPayment Consent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpayment Method Ġ= ĠPayment Method . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType ( payment MethodType ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Payment Consent ?. let Ġ{ Ġlistener ?. on Payment Consent Click ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠSpace Holder ( ĊĠĠĠĠĠĠĠ Ġview Binding : ĠPayment Method Space Item Binding ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( view Binding . root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconstructor ( context : ĠContext , Ġparent : ĠViewGroup ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Method Space Item Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind View () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . layout Params . height Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( available Third Payment Types . isNotEmpty () Ġ&& Ġpayment Consent s . size Ġ== Ġ 0 ) Ġ 0 Ġelse ĠitemView . context . resources . get Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . dim en . space _ height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġinterface ĠListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Payment Consent Click ( payment Consent : ĠPayment Consent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġenum Ġclass ĠItem ViewType Ġ{ ĊĠĠĠĠĠĠĠ ĠCard , ĊĠĠĠĠĠĠĠ ĠThird Pay , ĊĠĠĠĠĠĠĠ ĠSpace ĊĠĠĠ Ġ} Ċ } Ċ