package Ġno . m hl . swap . ui . currency selection . adapter . view holder Ċ Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . graphics . drawable . Gradient Drawable Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġno . m hl . swap . R Ċ import Ġno . m hl . swap . data . model . Currency Ċ import Ġno . m hl . swap . data . model . view . Currency ListItem Ċ import Ġno . m hl . swap . data . model . view . HEADER Ċ import Ġno . m hl . swap . util . currency As Drawable Ċ import Ġno . m hl . swap . util . extension . from Dp To Float Ċ Ċ class ĠCurrency Item ViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĊĠĠĠ Ġ// Ġregion ĠView ĠProperties ĊĠĠĠ Ġprivate Ġval Ġname : ĠTextView Ġ= Ġview . findViewById ( R . id . row _ currency _ name ) ĊĠĠĠ Ġprivate Ġval ĠfullName : ĠTextView Ġ= Ġview . findViewById ( R . id . row _ currency _ full _ name ) ĊĠĠĠ Ġprivate Ġval Ġflag : ĠImageView Ġ= Ġview . findViewById ( R . id . row _ currency _ flag ) ĊĠĠĠ Ġprivate Ġval Ġparent : ĠConstraint Layout Ġ= Ġview . findViewById ( R . id . parent ) ĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion ĠProperties ĊĠĠĠ Ġprivate Ġval Ġsmall Ġ= Ġ 8 f . from Dp To Float ( item View . context ) ĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion ĠView ĠDetails ĠSetup ĊĠĠĠ Ġfun Ġbind ( ĊĠĠĠĠĠĠĠ Ġcurrency : ĠCurrency , ĊĠĠĠĠĠĠĠ Ġcurrency Click Event : ĠMutable LiveData < Currency >, ĊĠĠĠĠĠĠĠ Ġprevious Item : ĠCurrency ListItem ?, ĊĠĠĠĠĠĠĠ Ġfollowing Item : ĠCurrency ListItem ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Row Details ( currency ) ĊĠĠĠĠĠĠĠ Ġsetup View Background ( previous Item , Ġfollowing Item ) ĊĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ Ġcurrency Click Event . post Value ( currency ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Row Details ( currency : ĠCurrency ) Ġ{ ĊĠĠĠĠĠĠĠ Ġname . text Ġ= Ġcurrency . name ĊĠĠĠĠĠĠĠ ĠfullName . text Ġ= Ġcurrency . fullName ĊĠĠĠĠĠĠĠ Ġflag . setImage Resource ( currency As Drawable ( currency . name )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup View Background ( ĊĠĠĠĠĠĠĠ Ġprevious Item : ĠCurrency ListItem ?, ĊĠĠĠĠĠĠĠ Ġfollowing Item : ĠCurrency ListItem ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( previous Item Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġparent . background Ġ= Ġbackground For Placement ( when Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfollowing Item Ġ== Ġnull Ġ-> ĠPl acement . BOTTOM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Item . type Ġ== ĠHEADER Ġ&& Ġfollowing Item . type Ġ== ĠHEADER Ġ-> ĠPl acement . SINGLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Item . type Ġ== ĠHEADER Ġ-> ĠPl acement . TOP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfollowing Item . type Ġ== ĠHEADER Ġ-> ĠPl acement . BOTTOM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠPl acement . MIDDLE ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion ĠBackground ĠResource ĠGeneration ĊĠĠĠ Ġprivate Ġfun Ġbackground For Placement ( placement : ĠPl acement ): ĠDrawable Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġget Drawable (@ Drawable Res Ġresource : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . get Drawable ( item View . context , Ġresource ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġget Drawable ( when Ġ( placement ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPl acement . TOP Ġ-> ĠR . drawable . ripple _ item _ currency _ top ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPl acement . MIDDLE Ġ-> ĠR . drawable . ripple _ item _ currency _ middle ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPl acement . BOTTOM Ġ-> ĠR . drawable . ripple _ item _ currency _ bottom ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPl acement . SINGLE Ġ-> ĠR . drawable . ripple _ item _ currency _ single ĊĠĠĠĠĠĠĠ Ġ}) ?: ĠGradient Drawable () ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion ĠItem ĠBackground ĠEnumeration ĊĠĠĠ Ġprivate Ġenum Ġclass ĠPl acement Ġ{ ĠTOP , ĠM ID DLE , ĠBOTTOM , ĠS INGLE Ġ} ĊĠĠĠ Ġ// Ġend region Ċ Ċ }