package Ġcom . cy l . music lake . ui . music . discover Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Activity Ċ import Ġandroid . support . v 7 . widget . Grid LayoutManager Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . util . Pair Ċ import Ġandroid . view . View Ċ import Ġcom . cy l . music api . net ease . Banner Bean Ċ import Ġcom . cy l . music lake . R Ċ import Ġcom . cy l . music lake . bean . Artist Ċ import Ġcom . cy l . music lake . bean . Music Ċ import Ġcom . cy l . music lake . bean . Playlist Ċ import Ġcom . cy l . music lake . common . Constants Ċ import Ġcom . cy l . music lake . common . Navigation Helper Ċ import Ġcom . cy l . music lake . ui . base . Base Fragment Ċ import Ġcom . cy l . music lake . ui . music . local . adapter . Song Adapter Ċ import Ġcom . cy l . music lake . ui . music . playlist . All Category Fragment Ċ import Ġkotlinx . android . synt hetic . main . frag _ discover .* ĊĊ Ċ /** Ċ Ġ* Ġ åĬŁèĥ½ ï¼ļ åľ¨ çº¿ æİĴ è¡Į æ ¦ ľ Ċ Ġ* Ġä½ľèĢħ ï¼ļ y ong long Ġon Ġ 2 0 1 6 / 8 / 1 1 Ġ 1 8 : 1 4 Ċ Ġ* Ġ éĤ®ç®± ï¼ļ 6 4 3 8 7 2 8 0 7 @ qq . com Ċ Ġ* Ġ çīĪæľ¬ ï¼ļ 2 . 5 Ċ Ġ*/ Ċ class ĠDis cover Fragment Ġ: ĠBase Fragment < Discover Presenter >(), ĠDis cover Contract . View , ĠView . OnClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Net ease Adapter : ĠTop Playlist Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Artist ListAdapter : ĠTop Artist ListAdapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Radio Adapter : ĠB aid u Radio Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Music Adapter : ĠSong Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Playlist Adapter : ĠTop Playlist Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġplaylist Ġ= Ġmutable ListOf < Playlist >() ĊĠĠĠ Ġprivate Ġvar Ġartists Ġ= Ġmutable ListOf < Artist >() ĊĠĠĠ Ġprivate Ġvar Ġchannels Ġ= Ġmutable ListOf < Playlist >() ĊĠĠĠ Ġprivate Ġvar Ġrecommend Ġ= Ġmutable ListOf < Music >() ĊĠĠĠ Ġprivate Ġvar Ġrecommend Playlist Ġ= Ġmutable ListOf < Playlist >() ĊĊĠĠĠ Ġprivate Ġfun Ġto Cat Tag All () Ġ{ ĊĠĠĠĠĠĠĠ ĠAll Category Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcur C ate Name Ġ= Ġthis @ Discover Fragment . cate Tag Tv . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Listener Ġ= Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Discover Fragment . update C ate ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. show It ( m Fragment Component . activity Ġas ĠFragment Activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæĽ´æĸ° åĪĨç±» æłĩçŃ¾ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġupdate C ate ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġc ate Tag Tv . text Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġm Presenter ?. load Net ease ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Id (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . frag _ discover ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Views () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġw ang Charts Rv ?. layout Manager Ġ= ĠGrid LayoutManager ( activity , Ġ 2 , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ// éĢĤ éħį åĻ¨ ĊĠĠĠĠĠĠĠ Ġm Net ease Adapter Ġ= ĠTop Playlist Adapter ( playlist ) ĊĠĠĠĠĠĠĠ Ġw ang Charts Rv ?. adapter Ġ= Ġm Net ease Adapter ĊĠĠĠĠĠĠĠ Ġw ang Charts Rv ?. is Focus able Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġw ang Charts Rv ?. is Nested Scrolling Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm Net ease Adapter ?. bind To RecyclerView ( wang Charts Rv ) ĊĊĠĠĠĠĠĠĠ Ġcharts Artist R cv ?. layout Manager Ġ= ĠGrid LayoutManager ( activity , Ġ 2 , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ// éĢĤ éħį åĻ¨ ĊĠĠĠĠĠĠĠ Ġm Artist ListAdapter Ġ= ĠTop Artist ListAdapter ( artists ) ĊĠĠĠĠĠĠĠ Ġcharts Artist R cv ?. adapter Ġ= Ġm Net ease Adapter ĊĠĠĠĠĠĠĠ Ġcharts Artist R cv ?. is Focus able Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġcharts Artist R cv ?. is Nested Scrolling Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm Artist ListAdapter ?. bind To RecyclerView ( charts Artist R cv ) ĊĊĠĠĠĠĠĠĠ Ġ// çĶµ åı° åĪĹè¡¨ ĊĠĠĠĠĠĠĠ Ġradio R sv ?. layout Manager Ġ= ĠGrid LayoutManager ( activity , Ġ 2 , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ// éĢĤ éħį åĻ¨ ĊĠĠĠĠĠĠĠ Ġm Radio Adapter Ġ= ĠB aid u Radio Adapter ( channels ) ĊĠĠĠĠĠĠĠ Ġradio R sv ?. adapter Ġ= Ġm Radio Adapter ĊĠĠĠĠĠĠĠ Ġradio R sv ?. is Focus able Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġradio R sv ?. is Nested Scrolling Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm Radio Adapter ?. bind To RecyclerView ( radio R sv ) ĊĊĠĠĠĠĠĠĠ Ġ// æİ¨èįĲ åĪĹè¡¨ ĊĠĠĠĠĠĠĠ Ġrecommend R sv . layout Manager Ġ= ĠLinearLayoutManager ( activity , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġm Music Adapter Ġ= ĠSong Adapter ( recommend ) ĊĠĠĠĠĠĠĠ Ġrecommend R sv . adapter Ġ= Ġm Music Adapter ĊĠĠĠĠĠĠĠ Ġrecommend R sv . is Focus able Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġrecommend R sv . is Nested Scrolling Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm Music Adapter ?. bind To RecyclerView ( recommend R sv ) ĊĠĠĠĠĠĠĠ Ġ// æİ¨èįĲ åĪĹè¡¨ ĊĠĠĠĠĠĠĠ Ġrecommend Playlist R sv . layout Manager Ġ= ĠGrid LayoutManager ( activity , Ġ 2 , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġm Playlist Adapter Ġ= ĠTop Playlist Adapter ( recommend Playlist ) ĊĠĠĠĠĠĠĠ Ġrecommend Playlist R sv . adapter Ġ= Ġm Playlist Adapter ĊĠĠĠĠĠĠĠ Ġrecommend Playlist R sv . is Focus able Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġrecommend Playlist R sv . is Nested Scrolling Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm Playlist Adapter ?. bind To RecyclerView ( recommend Playlist R sv ) ĊĊĠĠĠĠĠĠĠ Ġm Swipe Refresh Layout ?. setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v ?. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . sing er List Tv Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĠNavigation Helper . navigate Fragment ( it , ĠArtist List Fragment ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . see All Artist Tv , ĠR . id . hot S inger Tv Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĠNavigation Helper . navigate Fragment ( it , ĠAll List Fragment . newInstance ( Constants . NET E ASE _ AR IT IST _ LIST , Ġartists , Ġchannels )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . see All Radio Tv , ĠR . id . radio Tv Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĠNavigation Helper . navigate Fragment ( it , ĠAll List Fragment . newInstance ( Constants . BA ID U _ RADIO _ LIST , Ġartists , Ġchannels )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . cat Tag 1 Tv Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate C ate (" åįİ è¯Ń ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . cat Tag 2 Tv Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate C ate (" æµģ è¡Į ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . cat Tag 3 Tv Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate C ate (" åı¤ é£İ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . cate Tag Tv Ġ-> Ġto Cat Tag All () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Injector () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Fragment Component . inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Loading () ĊĠĠĠĠĠĠĠ Ġm Presenter ?. load Net ease (" åħ¨éĥ¨ ") ĊĠĠĠĠĠĠĠ Ġm Presenter ?. load Art ists () ĊĠĠĠĠĠĠĠ Ġm Presenter ?. load R ai os () ĊĠĠĠĠĠĠĠ Ġm Presenter ?. load Recommend S ongs () ĊĠĠĠĠĠĠĠ Ġm Presenter ?. load Recommend Playlist () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlistener () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Net ease Adapter ?. setOn ItemClickListener Ġ{ Ġadapter , Ġview , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplaylist Ġ= Ġadapter . data [ position ] Ġas ĠPlaylist ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation Helper . navigate To Playlist ( m Fragment Component . activity , Ġplaylist , ĠPair ( view . findViewById ( R . id . iv _ cover ), ĠgetString ( R . string . transition _ album ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Artist ListAdapter ?. setOn ItemClickListener Ġ{ Ġadapter , Ġview , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġartist Ġ= Ġadapter . data [ position ] Ġas ĠArtist ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation Helper . navigate To Playlist ( m Fragment Component . activity , Ġartist , ĠPair < View , ĠString >( view . findViewById < View >( R . id . iv _ cover ), ĠgetString ( R . string . transition _ album ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Radio Adapter ?. setOn ItemClickListener Ġ{ Ġ_, Ġview , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation Helper . navigate To Playlist ( m Fragment Component . activity , Ġchannels [ position ], ĠPair ( view . findViewById ( R . id . iv _ cover ), ĠgetString ( R . string . transition _ album ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcat Tag 3 Tv . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġc ate Tag Tv . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġcat Tag 1 Tv . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġcat Tag 2 Tv . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġs inger List Tv . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġhot S inger Tv . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġradio Tv . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġsee All Radio Tv . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġsee All Artist Tv . setOnClickListener ( this ) ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġfun Ġon Lazy Load () Ġ{ Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Empty View ( msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠ Ġshow Error ( msg , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġretry Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . retry Loading () ĊĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow B aid u Charts ( charts : ĠMutable List < Playlist >) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Banner View ( b anners : ĠMutable List < Banner Bean >) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġb anners . size ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b anners [ i ]. target Type Ġ== Ġ" 3 0 0 0 ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb anners . remove At ( i ) Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// banner ĊĠĠĠĠĠĠĠ Ġm z Banner View . set Pages ( b anners Ġas ĠList < Nothing >) Ġ{ Ġactivity ?. let Ġ{ ĠBanner ViewHolder ( it ) Ġ} Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġm z Banner View . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġm z Banner View . pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Net ease Charts ( charts : ĠMutable List < Playlist >) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠ Ġplaylist View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġm Net ease Adapter ?. set New Data ( charts ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Artist Charts ( charts : ĠMutable List < Artist >) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠ Ġthis . artists Ġ= Ġcharts ĊĠĠĠĠĠĠĠ Ġm Artist ListAdapter ?. set New Data ( charts ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Radio Channels ( channels : ĠMutable List < Playlist >) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠ Ġthis . channels Ġ= Ġchannels ĊĠĠĠĠĠĠĠ Ġm Radio Adapter ?. set New Data ( channels ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Recommend Playlist ( play lists : ĠMutable List < Playlist >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrecommend Playlist View . visibility Ġ= Ġif Ġ( play lists . size Ġ== Ġ 0 ) ĠView . GONE Ġelse ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġthis . recommend Playlist Ġ= Ġplay lists ĊĠĠĠĠĠĠĠ Ġm Playlist Adapter ?. set New Data ( recommend Playlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Recommend S ongs ( songs : ĠMutable List < Music >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrecommend Playlist View . visibility Ġ= Ġif Ġ( songs . size Ġ== Ġ 0 ) ĠView . GONE Ġelse ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġthis . recommend Ġ= Ġsongs ĊĠĠĠĠĠĠĠ Ġm Music Adapter ?. set New Data ( recommend ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠDis cover Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠDis cover Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }