package Ġcom . example . events . ui . recyclerview Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Filter Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . events . R Ċ import Ġcom . example . events . data . model . Event Ċ import Ġcom . example . events . ui . utils . Date Converter Ċ import Ġcom . example . events . ui . utils . Img Loader Ċ import Ġcom . google . android . material . card . Material Card View Ċ Ċ class ĠEvent Adapter ( ĊĠĠĠ Ġprivate Ġval Ġclick : ĠAdapter Click < Event >, ĊĠĠĠ Ġprivate Ġval Ġimg Loader : ĠImg Loader Ċ ): ĠRecyclerView . Adapter < Event Adapter . ViewHolder >() Ġ{ ĊĠĠĠ Ġvar Ġevents : ĠArrayList < Event > Ġ= ĠArrayList < Event >() ĊĠĠĠ Ġvar Ġevents Search List Ġ= ĠArrayList < Event >() ĊĠĠĠ Ġval Ġconverter Ġ= ĠDate Converter () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . event _ item , Ġparent , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġevent Ġ= Ġevents . get ( position ) ĊĊĠĠĠĠĠĠĠ Ġholder . eventName . text Ġ= Ġevent . title ĊĠĠĠĠĠĠĠ Ġholder . event Date . text Ġ= Ġconverter . convert Timestamp ToDate String ( event . date ) ĊĠĠĠĠĠĠĠ Ġholder . event Price . text Ġ= Ġevent . price . toString () ĊĊĠĠĠĠĠĠĠ Ġimg Loader . load Image ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg Url Ġ= Ġevent . image , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg View Ġ= Ġholder . item View . findViewById ( R . id . item _ event _ img ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġholder . item View . findViewById < Material Card View >( R . id . event _ item _ card view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setOnClickListener Ġ{ Ġclick . simple Click ( event ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġevents . size ĊĊĠĠĠ Ġfun Ġget Filter (): ĠFilter Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠeventName Filter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠeventName Filter Ġ= Ġobject Ġ: ĠFilter () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġperform Filtering ( constraint : ĠCharSequence ?): ĠFilter Results Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter edList : ĠArrayList < Event > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( constraint Ġ== Ġnull Ġ|| Ġconstraint . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevents Search List . let Ġ{ Ġfilter edList . addAll ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġconstraint . toString (). trim (). toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevents Search List . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . title . toLowerCase (). contains ( query )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter edList . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠFilter Results () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults . values Ġ= Ġfilter edList ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresults ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpublish Results ( constraint : ĠCharSequence ?, Ġresults : ĠFilter Results ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( results ?. values Ġis ĠArrayList <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevents . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevents . addAll ( results . values Ġas ĠArrayList < Event >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Data ( list : ĠList < Event >) Ġ{ ĊĠĠĠĠĠĠĠ Ġevents Ġ= ĠArrayList < Event >( list ) ĊĠĠĠĠĠĠĠ Ġevents Search List Ġ= ĠArrayList < Event >( list ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠViewHolder ( view : ĠView ): Ġ ĠRecyclerView . ViewHolder ( view ) Ġ Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠeventName Ġ= Ġview . findViewById < TextView >( R . id . event _ item _ name ) ĊĠĠĠĠĠĠĠ Ġval Ġevent Date Ġ= Ġview . findViewById < TextView >( R . id . event _ item _ date ) ĊĠĠĠĠĠĠĠ Ġval Ġevent Price Ġ= Ġview . findViewById < TextView >( R . id . event _ item _ price ) ĊĠĠĠĠĠĠĠ Ġval Ġevent Img Ġ= Ġview . findViewById < ImageView >( R . id . item _ event _ img ) ĊĠĠĠ Ġ} Ċ }