package Ġcom . projects . me li h . gist pub . view . gist . follow er Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . widget . Swipe Refresh Layout Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . projects . me li h . gist pub . Constants Ċ import Ġcom . projects . me li h . gist pub . R Ċ import Ġcom . projects . me li h . gist pub . live view model . Follow ers ViewModel Ċ import Ġcom . projects . me li h . gist pub . model . Contributor Ċ import Ġcom . projects . me li h . gist pub . network . service . ErrorCode Ċ import Ġcom . projects . me li h . gist pub . network . service . ErrorMessage Ċ import Ġcom . projects . me li h . gist pub . view . Base Fragment Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġme li h Ġon Ġ 1 2 / 0 8 / 2 0 1 7 Ċ Ġ*/ Ċ open Ġclass ĠFollow ers Fragment Ġ: ĠBase Fragment (), ĠSw ipe Refresh Layout . On Refresh Listener Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠFollow ers ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġempty View : ĠView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfollow er Adapter : ĠFollow ers Adapter ĊĊĠĠĠ Ġoverride Ġval Ġmenu Res : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠConstants . NO _ RES ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater ?, Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate View ( in flater , Ġcontainer , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this ). get ( Follow ers ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater ?. inflate ( R . layout . fragment _ followers , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView ?, ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġempty View Ġ= Ġview !!. findViewById ( R . id . empty View ) ĊĠĠĠĠĠĠĠ Ġval Ġre cyclerView : ĠRecyclerView Ġ= Ġview . findViewById ( R . id . re cyclerView ) ĊĠĠĠĠĠĠĠ Ġval Ġswipe Refresh Layout : ĠSw ipe Refresh Layout Ġ= Ġview . findViewById ( R . id . swipe Refresh Layout ) ĊĠĠĠĠĠĠĠ Ġfollow er Adapter Ġ= ĠFollow ers Adapter ( object Ġ: ĠFollow ers Adapter . ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Detail Item Click ( follow er : ĠContributor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Listener ?. open Fragment ( Follower Detail Fragment . newInstance ( follow er ), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġre cyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġfollow er Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Color Scheme Resources ( R . color . orange , ĠR . color . green , ĠR . color . blue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Refresh Listener ( this @ Follow ers Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Refresh () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . isEmpty LiveData . observe ( this @ Follow ers Fragment , ĠObserver < Boolean > Ġ{ Ġis Visible Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty View . visibility Ġ= Ġif Ġ( isVisible !! ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . isLoading LiveData . observe ( this @ Follow ers Fragment , ĠObserver < Boolean > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . error LiveData . observe ( this @ Follow ers Fragment , ĠObserver < ErrorMessage > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Sn ackBar ( when Ġ( it . errorCode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠErrorCode . GENERAL _ ERROR Ġ-> Ġcontext . getString ( R . string . unknown _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠErrorCode . NO _ NETWORK Ġ-> Ġcontext . getString ( R . string . un connected _ network ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . set UserName ( username ) ĊĠĠĠĠĠĠĠ ĠviewModel . followers . first ?. observe ( this @ Follow ers Fragment , ĠObserver ( follow er Adapter :: set List )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Refresh () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . set UserName ( username ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠFollow ers Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFollow ers Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ