package Ġorg . music p imp . ui . music Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Image Button Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġkotlinx . android . synt hetic . main . track _ item . view .* Ċ import Ġorg . music p imp . Directory Ċ import Ġorg . music p imp . Folder Ċ import Ġorg . music p imp . R Ċ import Ġorg . music p imp . Track Ċ Ċ interface ĠTrack Delegate Ġ{ ĊĠĠĠ Ġfun Ġon Track ( track : ĠTrack , Ġposition : ĠInt ) ĊĠĠĠ Ġfun Ġon Track More ( track : ĠTrack , Ġview : ĠImage Button , Ġposition : ĠInt ) Ċ } Ċ Ċ interface ĠMusic Item Delegate Ġ: ĠTrack Delegate Ġ{ ĊĠĠĠ Ġfun Ġon Folder ( folder : ĠFolder ) ĊĠĠĠ Ġfun Ġon Folder More ( folder : ĠFolder , Ġview : ĠImage Button ) Ċ } Ċ Ċ class ĠMusic Adapter ( var Ġdirectory : ĠDirectory , Ġprivate Ġval Ġdelegate : ĠMusic Item Delegate ) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Music Adapter . Music Item Holder >() Ġ{ ĊĠĠĠ Ġclass ĠMusic Item Holder ( val Ġlayout : ĠConstraint Layout ) Ġ: ĠRecyclerView . ViewHolder ( layout ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠMusic Item Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . track _ item , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) Ġas ĠConstraint Layout ĊĠĠĠĠĠĠĠ Ġreturn ĠMusic Item Holder ( layout ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( th : ĠMusic Item Holder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Ġ= Ġth . layout ĊĠĠĠĠĠĠĠ Ġval Ġmore Button Ġ= Ġlayout . music _ item _ more _ button ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġlayout . music _ item _ title ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ< Ġdirectory . folders . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfolder Ġ= Ġdirectory . folders [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . text Ġ= Ġfolder . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . on Folder ( folder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmore Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . on Folder More ( folder , Ġmore Button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrack Ġ= Ġdirectory . tracks [ position Ġ- Ġdirectory . folders . size ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . text Ġ= Ġtrack . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . on Track ( track , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmore Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . on Track More ( track , Ġmore Button , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġdirectory . size Ċ } Ċ