package Ġcom . h end ra angg rian . widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . Filter Ċ import Ġjava . util . Collections . addAll Ċ Ċ /** Ċ Ġ* ĠAn ĠArray Adapter Ġcustomized Ġwith Ġfilter Ġto Ġdisplay Ġitems . Ċ Ġ* ĠIt Ġis Ġa Ġdirect Ġparent Ġof Ġdefault Ġ[ Has ht ag Adapter ] Ġand Ġ[ Mention Adapter ], Ċ Ġ* Ġwhich Ġare Ġoptional Ġadapters . Ċ Ġ*/ Ċ abstract Ġclass ĠSocial Adapter < T >( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġresource : ĠInt , ĊĠĠĠ ĠtextView ResourceId : ĠInt Ċ ) Ġ: ĠArray Adapter < T >( context , Ġresource , ĠtextView ResourceId , ĠArrayList < T >()) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġfilter : ĠFilter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġitems : ĠMutable List < T > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġprivate Ġval Ġtemp Items : ĠMutable List < T > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġoverride Ġfun Ġget Filter (): ĠFilter Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( filter Ġ== Ġnull ) Ġfilter Ġ= ĠSocial Filter () ĊĠĠĠĠĠĠĠ Ġreturn Ġfilter !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( item : ĠT ?) Ġ= Ġadd ( item , Ġtrue ) ĊĊĠĠĠ Ġoverride Ġfun Ġadd All ( collection : ĠCollection < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . addAll ( collection ) ĊĠĠĠĠĠĠĠ Ġtemp Items . addAll ( collection ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd All ( var arg Ġitems : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . addAll (* items ) ĊĠĠĠĠĠĠĠ Ġadd All ( temp Items , Ġ* items ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove ( item : ĠT ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . remove ( item ) ĊĠĠĠĠĠĠĠ Ġtemp Items . remove ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear () Ġ= Ġclear ( true ) ĊĊĠĠĠ Ġprivate Ġfun Ġadd ( item : ĠT ?, Ġaffect Temp Items : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . add ( item ) ĊĠĠĠĠĠĠĠ Ġif Ġ( a ffect Temp Items ) Ġtemp Items . add ( item !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclear ( a ffect Temp Items : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . clear () ĊĠĠĠĠĠĠĠ Ġif Ġ( a ffect Temp Items ) Ġtemp Items . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠSocial Filter Ġ: ĠFilter () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġperform Filtering ( s : ĠCharSequence ?): ĠFilter Results Ġ= Ġwhen Ġ( s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> ĠFilter Results () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ+= Ġtemp Items ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconvert Result ToString ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains ( s . toString (). toLowerCase ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Results (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues Ġ= Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ= Ġitems . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpublish Results ( s : ĠCharSequence ?, Ġresults : ĠFilter Results ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") Ġ( results . values Ġas ? ĠArrayList < T >) ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( results . count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . forEach Ġ{ Ġadd ( it , Ġfalse ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconvert Result ToString ( result Value : ĠAny ?): ĠCharSequence Ġ= Ġresult Value . toString () ĊĠĠĠ Ġ} Ċ }