package Ġcom . invent iv . g ast rop ays dk . ui . merchants . search merchant Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . invent iv . g ast rop ays dk . R Ċ import Ġcom . invent iv . g ast rop ays dk . data . response . Tag Ċ import Ġcom . invent iv . g ast rop ays dk . databinding . Item Tag Group G ast rop ay Sdk Binding Ċ import Ġcom . invent iv . g ast rop ays dk . utils . COMMA Ċ import Ġcom . invent iv . g ast rop ays dk . utils . EMPTY Ċ import Ġcom . invent iv . g ast rop ays dk . utils . load Image Ċ Ċ internal Ġclass ĠTag Adapter Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġtags Ġ= Ġarray ListOf < Tag >() ĊĊĠĠĠ Ġfun Ġset Tags ( tags : ĠList < Tag >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . tags . clear () ĊĠĠĠĠĠĠĠ Ġthis . tags . addAll ( tags ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġreturn ĠTag Group ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Tag Group G ast rop ay Sdk Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinflater , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġtags . size ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( holder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTag Group ViewHolder Ġ-> Ġholder . bind ( tags [ position ], Ġposition ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Selected Tags (): ĠList < Tag > Ġ= Ġtags . filter Ġ{ Ġit . isSelected Ġ} ĊĊĠĠĠ Ġfun Ġget Tag Ids (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselected Tags Ġ= Ġtags . filter Ġ{ Ġit . isSelected Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Tags . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEMPTY ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġstr Builder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġselected Tags ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstr Builder . append ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstr Builder . append ( COMMA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġstr Ids Ġ= Ġstr Builder . toString () ĊĠĠĠĠĠĠĠ Ġreturn Ġstr Ids . substring ( 0 , Ġstr Ids . length Ġ- Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear Tags () Ġ{ ĊĠĠĠĠĠĠĠ Ġtags . forEach Ġ{ Ġit . isSelected Ġ= Ġfalse Ġ} ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠTag Group ViewHolder ( ĊĠĠĠ Ġval Ġbinding : ĠItem Tag Group G ast rop ay Sdk Binding Ċ ) Ġ: ĊĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠ Ġfun Ġbind ( tag : ĠTag , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchange Card Color ( tag . isSelected ) ĊĠĠĠĠĠĠĠ Ġbinding . card Root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag . isSelected Ġ= Ġ! tag . isSelected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Card Color ( tag . isSelected ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . image Tag Icon . load Image ( tag . icon . url ) ĊĠĠĠĠĠĠĠ Ġbinding . text Tag Title . text Ġ= Ġtag . tagName ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Card Color ( isSelected : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . card Root . set Card BackgroundColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . card Root . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . s ung low _ g ast rop ay _ sdk ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . card Root . set Card BackgroundColor ( Color . WHITE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }