package Ġcom . example . wh atis up . src . ui . adapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Image Button Ċ import Ġcom . example . wh atis up . R Ċ import Ġcom . example . wh atis up . src . data . model . Emoji Ċ import Ġcom . example . wh atis up . src . ui . view model . Day Activity ViewModel Ċ import Ġcom . example . wh atis up . src . utils . get Emoji Drawable Ċ Ċ class ĠEmoji Adapter ( private Ġval Ġemoji List : ĠList < Emoji >, Ġprivate Ġval Ġcontext : ĠContext ) Ġ: Ġandroidx . recyclerview . widget . RecyclerView . Adapter < Emoji ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġholder List : ĠMutable List < Emoji ViewHolder > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġvar Ġselected : ĠInt Ġ= Ġ 2 Ġ// Ġdefault Ġselected Ġis Ġneutral ĊĊĠĠĠ Ġprivate Ġvar Ġvm : ĠDay Activity ViewModel ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġemoji List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠEmoji ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . emoji Icon . setImage Drawable ( get Emoji Drawable ( position , Ġcontext )) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġselected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . selected Indicator . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġholder . emoji Icon . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide All Selectors () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . selected Indicator . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġholder . adapter Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvm ?. set Emoji ( selected ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġtype : ĠInt ): ĠEmoji ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . emoji _ row _ layout , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġholder Ġ= ĠEmoji ViewHolder ( view ) ĊĠĠĠĠĠĠĠ Ġholder List . add ( holder ) ĊĠĠĠĠĠĠĠ Ġreturn Ġholder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide All Selectors () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( holder Ġin Ġholder List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . selected Indicator . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Vm ( vm : ĠDay Activity ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . vm Ġ= Ġvm ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Selection ( type : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide All Selectors () ĊĠĠĠĠĠĠĠ Ġselected Ġ= Ġtype ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠEmoji ViewHolder ( v : ĠView ) Ġ: Ġandroidx . recyclerview . widget . RecyclerView . ViewHolder ( v ){ ĊĠĠĠ Ġval Ġemoji Icon Ġ= Ġv . findViewById < Image Button >( R . id . em ot icon _ btn ) ĊĠĠĠ Ġval Ġselected Indicator Ġ= Ġv . findViewById < View >( R . id . selected _ indicator ) Ċ }