package Ġcom . m ichael po hl . deleg ation adapter Ċ Ċ import Ġandroid . view . View Ċ import Ġtim ber . log . Tim ber Ċ Ċ /** Ċ Ġ* ĠDelegate Ġbase Ġclass Ġfor Ġre cycler Ġitems Ġthat Ġshould Ġbe Ġclick able Ġ( as Ġin : Ġclick Ġthe Ġentire Ġitem Ġto Ġtrigger Ġsomething ). Ċ Ġ* ĠJust Ġset Ġthe Ġclick Listener , Ġand Ġit Ġwill Ġautomatically Ġbe Ġconnected Ġto Ġthe Ġitem . ĠIf Ġyou Ġneed Ġmore Ġcomplicated Ġactions , Ċ Ġ* Ġit 's Ġbetter Ġto Ġun se Ġa Ġregular Ġ[ Adapter Item Delegate ] Ġand Ġdo Ġthe Ġbinding Ġyourself Ġin Ġthe Ġ[ Deleg ation Adapter Item Holder ]' s Ċ Ġ* Ġ[ bind ] Ġmethod . Ċ Ġ*/ Ċ abstract Ġclass ĠClick able Adapter Item Delegate < ItemType Ġ: ĠAny , ĠH older Type Ġ: ĠDeleg ation Adapter Item Holder < ItemType >> Ġ: ĊĠĠĠ ĠAdapter Item Delegate < ItemType , ĠH older Type >() Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthis Ġto Ġdefine Ġa Ġfunction Ġtaking Ġ[ ItemType ] Ġthat Ġis Ġcalled Ġwhen Ġan Ġitem Ġbelong ing Ġto Ġthis Ġdelegate Ġtriggers ĊĠĠĠĠ Ġ* Ġsomething Ġ( e . g . Ġas Ġa Ġresult Ġof Ġa Ġclick ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġyou Ġneed Ġto Ġrun Ġany Ġlogic Ġon Ġthe Ġdata Ġsent Ġto Ġthe Ġlistener , Ġit 's Ġbest Ġapplied Ġin Ġthe Ġdelegate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġval Ġclick Listener : Ġ(( ItemType ) Ġ-> ĠUnit )? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOverride Ġthis Ġif Ġnecessary . ĠIf Ġnot Ġover rid en , Ġit Ġforwards Ġclick Ġevents Ġ( when Ġ[ is Item Clickable ] Ġis Ġtrue ) ĊĠĠĠĠ Ġ* Ġto Ġthe Ġ[ click Listener ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġfun Ġdo OnClick ( view : ĠView , Ġitem : ĠItem Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclick Listener ?. invoke ( item ) Ġ?: ĠTim ber . w ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Click Receiver Ġnot Ġset . ĠSw allow ing Ġthis Ġclick Ġevent " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġhide s Ġaway Ġpre par ational Ġwork Ġwhen Ġthe Ġadapter 's Ġon Bind ViewHolder () Ġis Ġcalled , Ġbefore Ġit ĊĠĠĠĠ Ġ* Ġcalls Ġ[ bind ViewHolder ] Ġwhich Ġis Ġimplemented Ġin Ġthe Ġrespective Ġsubclass . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġunchecked Ġcast s Ġin Ġhere Ġshould Ġbe Ġcovered Ġby Ġthe Ġ. is For ItemType Ġcheck . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" Unchecked Ġcast ") ĊĠĠĠ Ġoverride Ġfun Ġdo Binding ( item : ĠAny , Ġholder : ĠDeleg ation Adapter Item Holder <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . is For ItemType ( item )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ Ġview Ġ-> Ġdo OnClick ( view , Ġitem Ġas ĠItem Type ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ViewHolder ( item Ġas ĠItem Type , Ġholder Ġas ĠH older Type ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Bind ViewHolder Failed ( item , Ġholder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ