package Ġcom . aim . lean tech test . ui . main . adapter Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . aim . lean tech test . R Ċ import Ġcom . aim . lean tech test . data . model . User Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġkotlinx . android . synt hetic . main . list _ item . view .* Ċ Ċ class ĠUser ListAdapter ( ĊĠĠĠ Ġprivate Ġval Ġusers : ĠArrayList < User > Ċ ) Ġ: ĠRecyclerView . Adapter < User ListAdapter . Data ViewHolder >() Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġlistener : ĠOn ItemClickListener ĊĊĠĠĠ Ġinterface ĠOn ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Item Click ( user : ĠUser ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On ItemClickListener Ġ( listener : ĠOn ItemClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠData ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( user : ĠUser , Ġlistener : ĠOn ItemClickListener ?, Ġusers : ĠArrayList < User >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . textView UserName . text Ġ= Ġuser . name ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . textView User Email . text Ġ= Ġuser . id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( item View . imageView Avatar . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( user . avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( item View . imageView Avatar ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġadapter Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( listener Ġ!= Ġnull Ġ&& Ġposition Ġ!= ĠRecyclerView . NO _ POSITION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Item Click ( users [ position ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ ĠData ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ). inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . list _ item , Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġusers . size ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠData ViewHolder , Ġposition : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ Ġholder . bind ( users [ position ], Ġlistener , Ġusers ) ĊĊĠĠĠ Ġfun Ġadd Data ( list : ĠList < User >) Ġ{ ĊĠĠĠĠĠĠĠ Ġusers . addAll ( list ) ĊĠĠĠ Ġ} Ċ }