package Ġjp . sad ashi . sample . apollo . client . ui . list Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġco il . load Ċ import Ġjp . sad ashi . sample . apollo . client . R Ċ import Ġjp . sad ashi . sample . apollo . client . databinding . Item User Binding Ċ import Ġjp . sad ashi . sample . apollo . client . graphql . Search User Query . Node Ċ import Ġjp . sad ashi . sample . apollo . client . graphql . Search User Query . As User Ġas ĠUser Ċ Ċ class ĠUser ListAdapter ( private Ġval Ġnodes : ĠList < Node ?> ) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < User ListAdapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġvar Ġon EndOf List Reached : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġvar Ġon Item Clicked : Ġ(( User ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠItem User Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), Ġparent , Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnodes . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġnodes [ position ]?. as User Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġholder . bind ( user ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġnodes . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon EndOf List Reached ?. invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( private Ġval Ġbinding : ĠItem User Binding ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( user : ĠUser ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . icon . load ( user . avatar Url ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaceholder ( R . drawable . ic _ placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . name . text Ġ= Ġuser . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . item Layout . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Clicked ?. invoke ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }