package Ġcom . cy l . music lake . ui . music . charts Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Parcel Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . cy l . music lake . Music App . mContext Ċ import Ġcom . cy l . music lake . R Ċ import Ġcom . cy l . music lake . bean . Playlist Ċ import Ġcom . cy l . music lake . ui . music . charts . Charts Adapter . Companion . ITEM _ CH ART Ċ import Ġcom . cy l . music lake . ui . music . charts . Charts Adapter . Companion . ITEM _ TITLE Ċ import Ġcom . cy l . music lake . utils . Cover Loader Ċ Ċ /** Ċ Ġ* Ġ æİĴ è¡Į æ ¦ ľ åĪĹè¡¨ Ċ Ġ*/ Ċ class ĠChart s Adapter ( val Ġcontext : ĠContext , Ġval Ġdata : ĠMutable List < Group Item Data >) Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĠĠĠ Ġvar Ġclick Listener : Ġ(( Int ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġvar Ġtag : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġstring Ids Ġ= Ġarray ListOf ( R . string . song _ list _ item _ title _ 1 , ĠR . string . song _ list _ item _ title _ 2 , ĠR . string . song _ list _ item _ title _ 3 ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// æłĩé¢ĺ ĊĠĠĠĠĠĠĠ Ġval ĠITEM _ TITLE Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġ// æİĴ è¡Į æ ¦ ľ åįķ æŃ£ æĸ¹ å½¢ ĊĠĠĠĠĠĠĠ Ġval ĠITEM _ CH ART Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġ// æİĴ è¡Į æ ¦ ľ åįķ éķ¿ æĸ¹ å½¢ ĊĠĠĠĠĠĠĠ Ġval ĠITEM _ CH ART _ LARGE Ġ= Ġ 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ·»åĬł æĸ° æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd New Data ( new List : ĠMutable List < Group Item Data >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartIndex Ġ= Ġdata . size ĊĠĠĠĠĠĠĠ Ġdata . addAll ( new List ) ĊĠĠĠĠĠĠĠ Ġnotify Item Range Inserted ( startIndex , Ġnew List . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ¸ ħ ç©º æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġclean Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata . clear () ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Inflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠITEM _ TITLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġm Inflater . inflate ( R . layout . item _ charts _ title , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTitle ViewHolder ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠITEM _ CH ART _ LARGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġm Inflater . inflate ( R . layout . item _ charts _ large , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChart Large ViewHolder ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġm Inflater . inflate ( R . layout . item _ charts , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChart ViewHolder ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( holder Ġis ĠTitle ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . title Tv . text Ġ= Ġdata [ position ]. title ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( holder Ġis ĠChart ViewHolder ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplaylist Ġ= Ġdata [ position ]. data Ġas ĠPlaylist ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠCover Loader . load ImageView ( mContext , Ġplaylist . cover Url , Ġholder . cover Iv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . title Tv . text Ġ= Ġplaylist . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . update Frequency Tv . text Ġ= Ġplaylist . update Frequency ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . cover Iv . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener ?. invoke ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( holder Ġis ĠChart Large ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplaylist Ġ= Ġdata [ position ]. data Ġas ĠPlaylist ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCover Loader . load ImageView ( mContext , Ġplaylist . cover Url , Ġholder . cover Iv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist . update Frequency ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . update Frequency Tv . text Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . update Frequency Tv . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġplaylist . music List . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ>= Ġ 3 ) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmusic Ġ= Ġplaylist . music List [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( i ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġholder . content Tv 1 . text Ġ= ĠmContext . getString ( string Ids [ i ], Ġmusic . title , Ġmusic . artist ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġholder . content Tv 2 . text Ġ= ĠmContext . getString ( string Ids [ i ], Ġmusic . title , Ġmusic . artist ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġholder . content Tv 3 . text Ġ= ĠmContext . getString ( string Ids [ i ], Ġmusic . title , Ġmusic . artist ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener ?. invoke ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata [ position ]. item Type ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠTitle ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtitle Tv Ġ= ĠitemView . findViewById < TextView >( R . id . tv _ title ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠChart ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtitle Tv Ġ= ĠitemView . findViewById < TextView >( R . id . tv _ title ) ĊĠĠĠĠĠĠĠ Ġvar Ġupdate Frequency Tv Ġ= ĠitemView . findViewById < TextView >( R . id . tv _ update _ frequency ) ĊĠĠĠĠĠĠĠ Ġvar Ġcover Iv Ġ= ĠitemView . findViewById < ImageView >( R . id . iv _ cover ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠChart Large ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġupdate Frequency Tv Ġ= ĠitemView . findViewById < TextView >( R . id . tv _ update _ frequency ) ĊĠĠĠĠĠĠĠ Ġvar Ġcover Iv Ġ= ĠitemView . findViewById < ImageView >( R . id . iv _ cover ) ĊĠĠĠĠĠĠĠ Ġval Ġcontent Tv 1 Ġ= ĠitemView . findViewById < TextView >( R . id . tv _ music _ 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġcontent Tv 2 Ġ= ĠitemView . findViewById < TextView >( R . id . tv _ music _ 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġcontent Tv 3 Ġ= ĠitemView . findViewById < TextView >( R . id . tv _ music _ 3 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Suppress Lint (" Parcel Creator ") Ċ class ĠGroup Item Data () Ġ: ĠParcel able Ġ{ ĊĠĠĠ Ġvar Ġitem Type Ġ= ĠITEM _ TITLE ĊĠĠĠ Ġvar Ġtitle : ĠString ? Ġ= Ġ"" ĊĠĠĠ Ġvar Ġdata : ĠAny ? Ġ= Ġnull ĊĊĠĠĠ Ġconstructor ( parcel : ĠParcel ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Type Ġ= Ġparcel . readInt () ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġparcel . readString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( title : ĠString ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . item Type Ġ= ĠITEM _ TITLE ĊĠĠĠĠĠĠĠ Ġthis . title Ġ= Ġtitle ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( playlist : ĠPlaylist ?) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . item Type Ġ= ĠITEM _ CH ART ĊĠĠĠĠĠĠĠ Ġthis . data Ġ= Ġplaylist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠwriteTo Parcel ( parcel : ĠParcel , Ġflags : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġparcel . writeInt ( item Type ) ĊĠĠĠĠĠĠĠ Ġparcel . writeString ( title ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdescribe Contents (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject ĠCRE ATOR Ġ: ĠParcel able . Creator < Group Item Data > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate From Parcel ( parcel : ĠParcel ): ĠGroup Item Data Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠGroup Item Data ( parcel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnew Array ( size : ĠInt ): ĠArray < Group Item Data ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf Null s ( size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }