package Ġcom . vn . nt es co . fragment Ċ Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . swiper ef resh layout . widget . Swipe Refresh Layout Ċ import Ġcom . vn . nt es co . R Ċ import Ġcom . vn . nt es co . activity . Detail Work Activity Ċ import Ġcom . vn . nt es co . adapter . List Report Adapter Ċ import Ġcom . vn . nt es co . base . Base Fragment Ċ import Ġcom . vn . nt es co . listener . End less Recycler On Scroll Listener Ċ import Ġcom . vn . nt es co . listener . ItemClickListener Ċ import Ġcom . vn . nt es co . model . Report Ċ import Ġcom . vn . nt es co . model . Request . NT es co Request GET Ċ import Ġcom . vn . nt es co . model . Response . Report Response Ċ import Ġcom . vn . nt es co . network . NT es co Service Ċ import Ġcom . vn . nt es co . network . Service Factory Ċ import Ġcom . vn . nt es co . utils . Constant Ċ import Ġcom . vn . nt es co . utils . Report Status Ċ import Ġrx . Observer Ċ import Ġrx . android . schedul ers . Android Schedulers Ċ import Ġrx . schedul ers . Schedulers Ċ Ċ class ĠList Report Fragment Ġ: ĠBase Fragment (), ĠSw ipe Refresh Layout . On Refresh Listener Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlist Report Adapter : ĠList Report Adapter ĊĠĠĠ Ġlateinit Ġvar Ġend less Recycler On Scroll Listener : ĠEnd less Recycler On Scroll Listener ĊĠĠĠ Ġvar Ġtype Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrv List Report : ĠRecyclerView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġswipe Refresh Layout : ĠSw ipe Refresh Layout ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtv N odata : ĠTextView ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( type : ĠInt ): ĠList Report Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Report Fragment Ġ= ĠList Report Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBundle Ġargs Ġ= Ġnew _ process ĠBundle (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Report Fragment . type Ġ= Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġtr uck Information Fragment . set Arguments ( args ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlist Report Fragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Resource (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . fragment _ list _ report ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Set Body View ( view : ĠView , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Report Adapter Ġ= ĠList Report Adapter ( activity ) ĊĠĠĠĠĠĠĠ Ġrv List Report Ġ= Ġview . findViewById ( R . id . rv Report ) ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout Ġ= Ġview . findViewById ( R . id . swipe Refresh Layout ) ĊĠĠĠĠĠĠĠ Ġtv N odata Ġ= Ġview . findViewById ( R . id . tv N odata ) ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . setOn Refresh Listener ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġlinear LayoutManager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġlist Report Adapter . setOn ItemClickListener ( object Ġ: ĠItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠAny > Ġon Item Click ( item : ĠT , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , ĠDetail Work Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Constant . REPORT , Ġitem Ġas ? ĠReport ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġrv List Report . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= Ġlinear LayoutManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġlist Report Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġend less Recycler On Scroll Listener Ġ= Ġobject Ġ: ĠEnd less Recycler On Scroll Listener ( linear LayoutManager , ĠConstant . DEFAULT _ FIRST _ PAGE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad More ( current _ page : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Reports ( current _ page ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrv List Report . add On Scroll Listener ( end less Recycler On Scroll Listener ) ĊĠĠĠĠĠĠĠ Ġget Reports ( Constant . DEFAULT _ FIRST _ PAGE ) ĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġ!= Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Broadcast ( list Report Receiver , ĠConstant . LIST _ REPORT _ LOCAL _ BRO ADCAST ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġvar Ġlist Report Receiver : ĠBroadcast Receiver Ġ= Ġobject Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Refresh () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Refresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġend less Recycler On Scroll Listener ?. reset Current Page () ĊĠĠĠĠĠĠĠ Ġget Reports ( Constant . DEFAULT _ FIRST _ PAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Reports ( page : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Loading ( true ) ĊĠĠĠĠĠĠĠ Ġvar Ġn tes co Request Ġ= ĠNT es co Request GET () ĊĠĠĠĠĠĠĠ Ġn tes co Request . set Page ( page ) ĊĠĠĠĠĠĠĠ Ġn tes co Request . setType ( type Ġ= Ġtype . toString ()) ĊĠĠĠĠĠĠĠ ĠService Factory . create Ret rofit Service ( NT es co Service :: class . java , ĠConstant . api EndPoint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Report ( nt es co Request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()). subscribe ( object Ġ: ĠObserver < Report Response > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Completed () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Loading ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( report Response : ĠReport Response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Loading ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( report Response . code Ġ== ĠConstant . SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Response . data ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Ġ== ĠConstant . DEFAULT _ FIRST _ PAGE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Report Adapter . data Ġ= Ġreport Response . data . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( report Response . data . data . size Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv N odata . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv N odata . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Report Adapter . data . addAll ( report Response . data . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Report Adapter . notify DataSet Changed () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġ!= Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunregister Broadcast ( list Report Receiver ) ĊĠĠĠ Ġ} Ċ Ċ }