/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 . Ġ- ĠLe bo gang ĠB ants ij ang Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . le bo gang . gens ys music . ui . adapters Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Filter Ċ import Ġandroid . widget . Filter able Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . le bo gang . gens ys music . data . models . Artist Ċ import Ġcom . le bo gang . gens ys music . databinding . Item Local Artist Binding Ċ import Ġcom . le bo gang . gens ys music . ui . adapters . utils . On Artist ClickListener Ċ import Ġcom . le bo gang . gens ys music . utils . G lide Manager Ċ Ċ class ĠItem Artist Adapter : RecyclerView . Adapter < Item Artist Adapter . ViewHolder >(), ĠFilter able { ĊĠĠĠ Ġvar Ġlistener : On Artist ClickListener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlist Artist Ġ= Ġarray ListOf < Artist >() ĊĠĠĠ Ġprivate Ġval Ġfilter edList Ġ= Ġarray ListOf < Artist >() ĊĠĠĠ Ġprivate Ġvar Ġis User Searching Ġ= Ġfalse ĊĊĠĠĠ Ġfun Ġset Artist Data ( mutable List : ĠMutable List < Artist > ){ ĊĠĠĠĠĠĠĠ Ġis User Searching Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġfilter edList . clear () ĊĠĠĠĠĠĠĠ Ġlist Artist . clear () ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 0 Ġuntil Ġmutable List . size ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Artist . add ( mutable List [ x ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Inserted ( x ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval Ġview Binding Ġ= ĠItem Local Artist Binding . inflate ( in flater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( view Binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġartist Ġ= Ġif (! is User Searching ) Ġlist Artist [ position ] Ġelse Ġfilter edList [ position ] ĊĠĠĠĠĠĠĠ Ġholder . view Binding . title View . text Ġ= Ġartist . title ĊĠĠĠĠĠĠĠ ĠG lide Manager ( holder . item View ). load Artist Art ( artist . get Art Uri (), Ġholder . view Binding . imageView ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is User Searching ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter edList . size ĊĠĠĠĠĠĠĠ Ġreturn Ġlist Artist . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( val Ġview Binding : Item Local Artist Binding ): RecyclerView . ViewHolder ( view Binding . root ){ ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Artist Click ( getItem (), view Binding . imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠgetItem (): ĠArtist Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen ( is User Searching ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġfilter edList [ adapter Position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġlist Artist [ adapter Position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Filter (): ĠFilter Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: Filter (){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġperform Filtering ( constraint : ĠCharSequence ?): ĠFilter Results Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis User Searching Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis User Searching Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter edList . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( x Ġin Ġ 0 Ġuntil Ġlist Artist . size ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġartist Ġ= Ġlist Artist [ x ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( artist . title . toLowerCase (). contains ( it . toString (). toLowerCase ())){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter edList . add ( artist ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFilter Results () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpublish Results ( constraint : ĠCharSequence ?, Ġresults : ĠFilter Results ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ