/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 . ĠCar los ĠRen Ã© ĠR amos ĠL Ã³ pe z . ĠAll Ġrights Ġreserved . Ċ Ġ* Ġ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 . c rr l . beat player . ui . adapters Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . System Clock Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . c rr l . beat player . R Ċ import Ġcom . c rr l . beat player . alert dialog . utils . View Utils . dip 2 px Ċ import Ġcom . c rr l . beat player . databinding . Favorite Item Binding Ċ import Ġcom . c rr l . beat player . extensions . inflate With Binding Ċ import Ġcom . c rr l . beat player . interfaces . ItemClickListener Ċ import Ġcom . c rr l . beat player . models . Favorite Ċ import Ġcom . c rr l . beat player . utils . General Utils . screen Width Ċ Ċ class ĠF avorite Adapter ( private Ġval Ġcontext : ĠContext ?) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Favorite Adapter . ViewHolder Favorite >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġlast Click Ġ= Ġ 0 L ĊĠĠĠ Ġvar Ġfavorite List : ĠMutable List < Favorite > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġvar Ġitem ClickListener : ĠItem ClickListener < Favorite >? Ġ= Ġnull ĊĠĠĠ Ġvar Ġspan Count : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( ĊĠĠĠĠĠĠĠ Ġparent : ĠViewGroup , ĊĠĠĠĠĠĠĠ Ġview Type : ĠInt ĊĠĠĠ Ġ): ĠF avorite Adapter . ViewHolder Favorite Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Binding Ġ= Ġparent . inflate With Binding < Favorite Item Binding >( R . layout . favorite _ item ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder Favorite ( view Binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġfavorite List . size ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠF avorite Adapter . ViewHolder Favorite , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( getItem ( position )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate DataSet ( new List : ĠList < Favorite >) Ġ{ ĊĠĠĠĠĠĠĠ Ġfavorite List Ġ= Ġnew List . to Mutable List () ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetItem ( position : ĠInt ): ĠF avorite Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfavorite List [ position ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder Favorite ( private Ġval Ġbinding : ĠF avorite Item Binding ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ), ĠView . OnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( artist : ĠF avorite ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . favorite Ġ= Ġartist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Pending Bindings () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Details . setOnClickListener ( this @ ViewHolder Favorite ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . layout Params . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġscreen Width Ġ/ Ġspan Count Ġ+ Ġdip 2 px ( context !! , Ġ 2 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġscreen Width Ġ/ Ġspan Count Ġ- Ġdip 2 px ( context , Ġ 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( System Clock . elapsed Realtime () Ġ- Ġlast Click Ġ< Ġ 3 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Click Ġ= ĠSystem Clock . elapsed Realtime () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item ClickListener Ġ!= Ġnull ) Ġitem ClickListener !!. on Item Click ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Position , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetItem ( adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }