package Ġorg . z lob ste . spot ter . extensions Ċ Ċ import Ġandroid . text . Selection Ċ import Ġandroid . text . Sp ann able Ċ import Ġandroid . text . Sp ann able String Ċ import Ġandroid . text . Sp anned Ċ import Ġandroid . text . method . Link Movement Method Ċ import Ġandroid . text . style . Clickable Span Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ Ċ fun ĠTextView . make Links ( var arg Ġlinks : ĠPair < String , ĠView . OnClickListener >) Ġ{ ĊĠĠĠ Ġval Ġsp ann able String Ġ= ĠSp ann able String ( this . text ) ĊĠĠĠ Ġfor Ġ( link Ġin Ġlinks ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclick able Span Ġ= Ġobject Ġ: ĠClick able Span () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSelection . setSelection (( view Ġas ĠTextView ). text Ġas ĠSp ann able , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink . second . onClick ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġstart IndexOf Link Ġ= Ġthis . text . toString (). indexOf ( link . first ) ĊĠĠĠĠĠĠĠ Ġsp ann able String . set Span ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick able Span , Ġstart IndexOf Link , Ġstart IndexOf Link Ġ+ Ġlink . first . length , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSp anned . SPAN _ EXCL USIVE _ EXCL USIVE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġthis . movement Method Ġ= ĊĠĠĠĠĠĠĠ ĠLink Movement Method . getInstance () Ġ// Ġwithout ĠLink Movement Method , Ġlink Ġcan Ġnot Ġclick ĊĠĠĠ Ġthis . setText ( span nable String , ĠTextView . Buffer Type . SPAN N ABLE ) Ċ } Ċ Ċ fun ĠViewGroup . inflate ( layout Res : ĠInt , Ġattach : ĠBoolean Ġ= Ġfalse ): ĠView ? Ġ= ĊĠĠĠ ĠLayoutInflater . from ( context ). inflate ( layout Res , Ġthis , Ġattach ) ĊĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" ViewHolder Ġnot Ġfound , Ġview Ġ= Ġnull ")