package Ġes . na ut ic apps . spot y media . ui . artist . top tracks Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . recyclerview . widget . Default Item Animator Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġes . na ut ic apps . spot y media . base . Base Extra Data Ċ import Ġes . na ut ic apps . spot y media . base . Base Fragment Ċ import Ġes . na ut ic apps . spot y media . base . Base State Ċ import Ġes . na ut ic apps . spot y media . databinding . Fragment Artist Binding Ċ import Ġes . na ut ic apps . spot y media . databinding . Fragment Artist Top track Binding Ċ import Ġes . na ut ic apps . spot y media . datal ayer . models . Track Ċ import Ġes . na ut ic apps . spot y media . ui . artist . Artist Fragment Args Ċ import Ġes . na ut ic apps . spot y media . ui . artist . Artist List State Ċ import Ġes . na ut ic apps . spot y media . ui . artist . Artist ViewModel Ċ import Ġes . na ut ic apps . spot y media . ui . home . Home Fragment Adapter Ċ import Ġes . na ut ic apps . spot y media . ui . home . Home List State Ċ import Ġretrofit 2 . HttpException Ċ import Ġjava . net . Unknown Host Exception Ċ Ċ class ĠArtist Top Tracks Fragment ( private Ġval Ġartist Id : ĠString ) Ġ: ĠBase Fragment < Artist Top Track List State , ĠArtist Top Track ViewModel , ĠFragment Artist Top track Binding >() Ġ{ ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBase Ġvars ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġvar ĠviewModel Class : ĠClass < Artist Top Track ViewModel > Ġ= ĠArtist Top Track ViewModel :: class . java ĊĠĠĠ Ġlateinit Ġvar Ġvm Ġ: ĠArtist Top Track ViewModel ĊĠĠĠ Ġoverride Ġval Ġbinding Inflater : Ġ( LayoutInflater , ĠViewGroup ?, ĠBoolean ) Ġ-> ĠFragment Artist Top track Binding Ġ= ĠFragment Artist Top track Binding :: inflate ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCustom ĠV ars ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġmy Adapter : ĠArtist Top Tracks Fragment Adapter ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Up ĠView ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġsetup View ( viewModel : ĠArtist Top Track ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvm Ġ= ĠviewModel ĊĠĠĠĠĠĠĠ ĠviewModel . request Top Tracks ( artist Id ) ĊĊĠĠĠĠĠĠĠ Ġmy Adapter Ġ= ĠArtist Top Tracks Fragment Adapter ( listOf < Track >()) ĊĊĠĠĠĠĠĠĠ Ġval Ġmy RecyclerView Ġ: ĠRecyclerView Ġ= Ġbinding . top track Recycler List ĊĠĠĠĠĠĠĠ Ġmy RecyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġmy Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Animator Ġ= ĠDefault Item Animator () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠManage ĠStates ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Normal ( data : ĠArtist Top Track List State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . top track ProgressBar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġmy Adapter . update List (( data ). list Top Tracks ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Loading ( data Loading : ĠBase Extra Data ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . top track ProgressBar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonError ( data Error : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġwhen Ġ( data Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠHttp Exception Ġ-> Ġ" Network ĠError : Ġ" Ġ+ Ġdata Error . code (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUnknown Host Exception Ġ-> Ġ" Please , ĠInternet Ġconnection Ġneeded Ġ!! " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" O ops ĠUnknown ĠError , ĠPlease Ġtry Ġlater Ġ!! " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠToast . makeText ( require Activity (), Ġmsg , ĠToast . LENGTH _ LONG ). show (); ĊĠĠĠ Ġ} Ċ Ċ }