package Ġcom . d ht . music . recent play ĊĊ Ċ import Ġandroid . content . Intent Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle ĊĊ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation . NonNull Ċ import Ġandroidx . annotation . Nullable Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . d ht . base lib . base . Base Activity Ċ import Ġcom . d ht . base lib . base . Base Fragment Ċ import Ġcom . d ht . base lib . callback . Re cycle Item Click CallBack Ċ Ċ import Ġcom . d ht . base lib . util . Vertical Decoration Ċ import Ġcom . d ht . base lib . util . toast Custom Time Ċ import Ġcom . d ht . database . bean . music . Recent Play Bean Ċ import Ġcom . d ht . database . preferences . Message Preferences Ċ import Ġcom . d ht . music . R Ċ import Ġcom . d ht . music . databinding . Fragment Recent Play Binding Ċ import Ġcom . d ht . music . local . Local Adapter Ċ import Ġcom . d ht . music . play music . Play Music Activity Ċ import Ġcom . d ht . music . recent play . Recent Play Adapter . Dynamic Type Ċ import Ġkotlinx . android . synt hetic . main . fragment _ recent _ play .* Ċ Ċ class ĠRecent Play Fragment Ġ: ĠBase Fragment () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġm ViewModel : ĠRecent Play ViewModel ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Binding : ĠFragment Recent Play Binding ĊĠĠĠ Ġprivate Ġvar Ġrecent Play Adapter : ĠRecent Play Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlayout Manager : ĠLinearLayoutManager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdynamic Type Ġ= ĠDynamic Type . PLAY _ TIME ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġ@ NonNull Ġinflater : ĠLayoutInflater , Ġ@ Nullable Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ Ġ@ Nullable ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġm Binding Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Binding Util . inflate ( in flater , ĠR . layout . fragment _ recent _ play , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġm Binding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created (@ Nullable ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġm ViewModel Ġ= ĠViewModel Providers . of ( this ). get ( Recent Play ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġm Binding . recent Play ViewModel Ġ= Ġm ViewModel ĊĠĠĠĠĠĠĠ Ġinit Views ( m Binding . root ) ĊĠĠĠĠĠĠĠ Ġbind Views () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Views ( view : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init Views ( view ) ĊĠĠĠĠĠĠĠ Ġrecent Top Title View . update View ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġas ĠBase Activity , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . list ening _ to _ songs ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . bind Views () ĊĠĠĠĠĠĠĠ Ġrecent Play Adapter Ġ= ĠRecent Play Adapter ( recycle Item Click CallBack , Ġcontext !! ) ĊĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġm ViewModel ?. recent Play Entity Data ?. observe ( this , ĠObserver < List < Recent Play Bean >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Recycler . layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Play Adapter !!. set Change List ( it , Ġdynamic Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġrecent Recycler . adapter Ġ= Ġrecent Play Adapter ĊĠĠĠĠĠĠĠ Ġrecent Recycler . addItem Decoration ( Vertical Decoration ( 3 )) ĊĠĠĠĠĠĠĠ Ġrecent Play . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġrecent One Week . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġrecent All Time . setOnClickListener ( this ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġre cycle Item Click CallBack : ĠRe cycle Item Click CallBack < Recent Play Bean > Ġ= ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠRe cycle Item Click CallBack < Recent Play Bean >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Requires Api ( api Ġ= ĠBuild . VERSION _ CODES . J EL LY _ BE AN _ MR 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemClickListener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype : ĠInt ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠRecent Play Bean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on ItemClickListener ( type , Ġvalue , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== ĠLocal Adapter . Type . IV . index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel !!. delete Current Recent Entity ( value ?. song Name , Ġdynamic Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. toast Custom Time ( ĠR . string . delete _ successful ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel ?. insert OrUpdate ( value !!. music ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Preferences . INSTANCE . current Music Ġ= Ġvalue !!. music ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠPlay Music Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Destroy () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġis Reverse Ġ= Ġtrue ĊĠĠĠ Ġoverride Ġfun Ġhandling Click Events ( view : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . handling Click Events ( view ) ĊĠĠĠĠĠĠĠ Ġlayout Manager ?. reverse Layout Ġ= Ġis Reverse ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view ?. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . recent Play Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdynamic Type Ġ= ĠDynamic Type . PLAY _ TIME ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel !!. asc Recent Play Time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . recent One Week Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdynamic Type Ġ= ĠDynamic Type . PLAY _ COUNT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel !!. asc Recent One Week ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . recent All Time Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdynamic Type Ġ= ĠDynamic Type . PLAY _ TOTAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel !!. asc Recent All Time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis Reverse Ġ= Ġ! is Reverse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Recent Play Fragment " ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠRecent Play Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRecent Play Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }