package Ġcom . example . gh oul s Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ import Ġcom . example . gh oul s . databinding . Front Song View Binding Ċ Ċ class ĠMusic Adapter ( private Ġval Ġcontext : ĠContext , Ġprivate Ġvar Ġmusic List : ĠArrayList < Music >, Ċ private Ġvar Ġplaylist Details : ĠBoolean Ġ= false , Ġprivate Ġval Ġselection Activity : ĠBoolean Ġ= Ġfalse ) ĊĠĠĠ Ġ: RecyclerView . Adapter < Music Adapter . My Holder > (){ ĊĠĠĠ Ġclass ĠMy Holder ( binding : ĠFront Song View Binding ) Ġ: RecyclerView . ViewHolder ( binding . root ){ ĊĠĠĠ Ġval Ġtitle Ġ= Ġbinding . song Name ĊĠĠĠĠĠĠĠ Ġval Ġalbum Ġ= binding . song Album ĊĠĠĠĠĠĠĠ Ġval Ġimage Ġ= Ġbinding . image view ĊĠĠĠĠĠĠĠ Ġval Ġduration Ġ= Ġbinding . song Duration ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġbinding . root ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠMy Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMy Holder ( Front Song View Binding . inflate ( LayoutInflater . from ( context ), parent , false )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠMy Holder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . title . text Ġ= Ġmusic List [ position ]. title ĊĠĠĠĠĠĠĠ Ġholder . album . text Ġ= Ġmusic List [ position ]. album ĊĠĠĠĠĠĠĠ Ġholder . duration . text Ġ= Ġformat Duration ( music List [ position ]. duration ) ĊĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( music List [ position ]. art Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( RequestOptions (). placeholder ( R . drawable . demo ). center Crop ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( holder . image ) ĊĊĠĠĠĠĠĠĠ Ġwhen { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Details Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Intent ( ref Ġ= Ġ" Playlist Details Adapter ", Ġpos Ġ= Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection Activity Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( add Song ( music List [ position ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . root . set BackgroundColor ( Context Compat . getColor ( context , ĠR . color . to uka _ background )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . root . set BackgroundColor ( Context Compat . getColor ( context , ĠR . color . white )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . search Ġ-> Ġsend Intent ( ref Ġ= Ġ" Music Adapter Search ", Ġpos Ġ= Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmusic List [ position ]. id Ġ== ĠPlayer Activity . now Playing Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Intent ( ref Ġ= Ġ" Now Playing ", Ġpos Ġ= ĠPlayer Activity . song Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse -> send Intent ( ref =" Music Adapter ", Ġpos Ġ= Ġposition ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmusic List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Notify DataSet Changed ") ĊĠĠĠ Ġfun Ġupdate Music List ( search List Ġ: ĠArrayList < Music > ){ ĊĠĠĠĠĠĠĠ Ġmusic List Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġmusic List . addAll ( search List ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġsend Intent ( ref : ĠString , Ġpos : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠPlayer Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra (" index ", Ġpos ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra (" class ", Ġref ) ĊĠĠĠĠĠĠĠ ĠContext Compat . startActivity ( context , Ġintent , Ġnull ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġadd Song ( song : ĠMusic ): ĠBoolean { ĊĠĠĠĠĠĠĠ ĠPlaylist Activity . music Playlist . ref [ Playlist Details . current Playlist Position ]. playlist . forEach Indexed Ġ{ Ġindex , Ġmusic Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( song . id Ġ== Ġmusic . id ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlaylist Activity . music Playlist . ref [ Playlist Details . current Playlist Position ]. playlist . remove At ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠPlaylist Activity . music Playlist . ref [ Playlist Details . current Playlist Position ]. playlist . add ( song ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġrefresh Playlist (){ ĊĠĠĠĠĠĠĠ Ġmusic List Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġmusic List Ġ= ĠPlaylist Activity . music Playlist . ref [ Playlist Details . current Playlist Position ]. playlist ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} Ċ }