package Ġcom . br ins . light music . ui . fragment . artists Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . br ins . light music . R Ċ import Ġcom . br ins . light music . utils . Rx Bus Ċ import Ġcom . br ins . light music . event . Play List Event Ċ import Ġcom . br ins . light music . model . Music Ċ import Ġcom . br ins . light music . model . album . Album Bean Ċ import Ġcom . br ins . light music . model . lo acl music . Play List Ċ import Ġcom . br ins . light music . model . music video . Last est Mv Data Bean Ċ import Ġcom . br ins . light music . model . music video . Mv Ċ import Ġcom . br ins . light music . ui . base . Base Fragment Ċ import Ġcom . br ins . light music . ui . base . adapter . Common View Adapter Ċ import Ġcom . br ins . light music . ui . base . adapter . On ItemClickListener Ċ import Ġcom . br ins . light music . ui . base . adapter . ViewHolder Ċ import Ġcom . br ins . light music . ui . fragment . discovery . Music Detail Fragment Ċ import Ġcom . br ins . light music . ui . fragment . video . Video Detail Fragment Ċ import Ġcom . br ins . light music . utils .* Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġkotlinx . android . synt hetic . main . fragment _ artist _ tab .* Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjavax . inject . Inject Ċ Ċ @ Android EntryPoint Ċ class ĠArtist Tab Fragment ( var Ġtype : ĠInt Ġ= Ġ 1 0 0 1 0 , Ġvar Ġid : ĠString ) Ġ: ĊĠĠĠ ĠBase Fragment (), ĊĠĠĠ ĠArtist Detail Con stract . View , ĠOn ItemClickListener Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġm Presenter : ĠArtist Detail Presenter ĊĠĠĠ Ġprivate Ġvar Ġplay List : ĠPlay List Ġ= ĠPlay List () ĊĠĠĠ Ġprivate Ġvar Ġmv Data Beans : ĠList < Last est Mv Data Bean > Ġ= ĠlistOf () ĊĠĠĠ Ġprivate Ġvar Ġalbum Data Beans : ĠMutable List < Album Bean > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġprivate Ġvar ĠcurrentTime : ĠLong Ġ= Ġ 0 ĊĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Res ID (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . fragment _ artist _ tab ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Lazy Load () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Lazy Load () ĊĠĠĠĠĠĠĠ Ġm Presenter . subscribe ( this ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Type . SON G . type Ġ-> Ġload Artist Song () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Type . MV . type Ġ-> Ġload Artist Mv () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Type . AL BU M . type Ġ-> Ġload Artist Album () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Artist Song () Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġload Artist Song ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Adapter : ĠCommon View Adapter < Music > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay List . add Song ( result . hot ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter Ġ= Ġobject Ġ: ĠCommon View Adapter < Music >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !! , ĠR . layout . item _ online _ music , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . hot !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconverted ( holder : ĠViewHolder , Ġt : ĠMusic , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr Builder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . artist Beans ?. forEach Ġ{ Ġstr Builder . append ("${ it . name } Ġ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . setText ( R . id . name , Ġt . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . setText ( R . id . artist , Ġstr Builder . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . getView < ImageView >( R . id . item _ cover ). visibility Ġ= ĠView . GONE Ċ /* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . getView < TextView >( R . id . count ). visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . setText ( R . id . count , Ġ"${ position Ġ+ Ġ 1 }") */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . setOn ItemClickListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġm Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp aces Item Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext !! , Ġ 2 , ĠR . color . g ery ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠR . string . connect _ error , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Retry View () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġload Artist Song ( id : ĠString ) Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġm Presenter . load Artist Song ( id ) ĊĠĠĠĠĠĠĠ Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Artist Mv () Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġload Artist Mv ( id , Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv Data Beans Ġ= Ġresult . data Beans !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Adapter : ĠCommon View Adapter < Last est Mv Data Bean > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter Ġ= Ġobject Ġ: ĠCommon View Adapter < Last est Mv Data Bean >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ video _ list , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( mv Data Beans Ġas ĠArrayList < Last est Mv Data Bean >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconverted ( holder : ĠViewHolder , Ġt : ĠLast est Mv Data Bean , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . setText ( R . id . tv _ title , Ġt . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . setText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . tv _ watch _ count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( t . play Count Ġ> Ġ 1 0 0 0 ) Ġ"${ t . play Count Ġ/ Ġ 1 0 0 0 } ä¸ĩ æĴŃæĶ¾ " Ġelse Ġ"${ t . play Count } æĴŃæĶ¾ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . setText ( R . id . tv _ author , Ġt . artist Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . setImage Resource ( R . id . iv _ avatar , Ġt . cover ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . setImage Resource ( R . id . video _ player , Ġt . cover ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . setOn ItemClickListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġm Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( context Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠR . string . connect _ error , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Retry View () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġload Artist Mv ( id : ĠString , Ġlimit : ĠInt ) Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġm Presenter . load Artist Mv ( id , Ġlimit ) ĊĠĠĠĠĠĠĠ Ġresult ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġload Artist Album () Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġload Artist Album ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalbum Data Beans . addAll ( response . hot Album s !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Adapter : ĠCommon View Adapter < Album Bean > Ġ= Ġobject Ġ: ĠCommon View Adapter < Album Bean >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ online _ music , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalbum Data Beans Ġas ĠArrayList < Album Bean > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconverted ( holder : ĠViewHolder , Ġt : ĠAlbum Bean , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . setImage Resource ( R . id . item _ cover , Ġt . pic Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . setText ( R . id . name , Ġt . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . setText ( R . id . artist , Ġt . artist !!. name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . setOn ItemClickListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġm Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . addItem Decoration ( Spaces Item Decoration ( context !! , Ġ 2 , ĠR . color . g ery )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠR . string . connect _ error , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Retry View () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġload Artist Album ( id : ĠString ) Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġm Presenter . load Artist Album ( id ) ĊĠĠĠĠĠĠĠ Ġresult ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( view : ĠView ?, Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( System . currentTimeMillis () Ġ- ĠcurrentTime Ġ< Ġ 2 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Type . SON G . type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentTime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay List . set Playing Index ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRx Bus . getInstance (). post ( Play List Event ( play List , Ġposition , ĠTYPE _ ON LINE _ M US IC )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Type . AL BU M . type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentTime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġalbum Data Beans [ position ]. id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . putString ( TAG , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitch ( Music Detail Fragment (), Ġbundle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Type . MV . type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentTime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresponse : ĠM v ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= Ġm Presenter . load Url ( mv Data Beans [ position ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . put Parcelable (" Mv ", Ġresponse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitch ( Video Detail Fragment (), Ġbundle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġswitch ( fragment : ĠFragment , Ġbundle : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). switch Fragment ( fragment , Ġbundle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Retry View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . show Retry View () ĊĠĠĠĠĠĠĠ Ġval Ġtext Error Ġ= ĠTextView ( context ) ĊĠĠĠĠĠĠĠ Ġtext Error . setText ( R . string . connect _ error ) ĊĠĠĠĠĠĠĠ Ġtext Error . text Size Ġ= Ġ 2 0 f ĊĠĠĠĠĠĠĠ Ġtext Error . setTextColor ( Context Compat . getColor ( context !! , ĠR . color . trans luc ent )) ĊĠĠĠĠĠĠĠ Ġval Ġp : ĠLinearLayout . LayoutParams Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġp . gravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠ Ġtext Error . gravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠ Ġcontainer . addView ( text Error , Ġp ) ĊĠĠĠĠĠĠĠ Ġtext Error . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . remove View ( text Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }