package Ġcom . me i ji . daily . module . zh uan lan Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . v 4 . widget . Swipe Refresh Layout Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . View Ċ import Ġcom . me i ji . daily . App Ċ import Ġcom . me i ji . daily . R Ċ import Ġcom . me i ji . daily . bean . Z hu an lan Bean Ċ import Ġcom . me i ji . daily . binder . Z hu an lan View Binder Ċ import Ġcom . me i ji . daily . module . base . Base Fragment Ċ import Ġcom . me i ji . daily . util . RecyclerView Util Ċ import Ġcom . me i ji . daily . util . Setting Helper Ċ import Ġkotlinx . android . synt hetic . main . fragment _ zh uan lan .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ zh uan lan . view .* Ċ import Ġkotlinx . android . synt hetic . main . item _ zh uan lan . view .* Ċ import Ġme . dr ake et . mult it ype . Multi Type Adapter Ċ import Ġjavax . inject . Inject ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠMe i ji Ġon Ġ 2 0 1 7 / 1 1 / 2 9 . Ċ Ġ*/ Ċ Ċ class ĠZ hu an lan View Ġ: ĠBase Fragment (), ĠSw ipe Refresh Layout . On Refresh Listener , ĠSharedPreferences . On Shared Preference ChangeListener Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġm Model : ĠZ hu an lan ViewModel ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġm Setting Helper : ĠSetting Helper ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġm SharedPreferences : ĠSharedPreferences ĊĊĠĠĠ Ġprivate Ġvar Ġm Adapter : ĠMulti Type Adapter ? Ġ= Ġnull ĊĠĠĠ Ġ@ Suppress (" deprecation ") ĊĠĠĠ Ġprivate Ġfun Ġrefresh UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtheme Ġ= Ġactivity !!. theme ĊĠĠĠĠĠĠĠ Ġval Ġroot View Background Ġ= ĠTyped Value () ĊĠĠĠĠĠĠĠ Ġval ĠitemView Background Ġ= ĠTyped Value () ĊĠĠĠĠĠĠĠ Ġval ĠtextColor Primary Ġ= ĠTyped Value () ĊĠĠĠĠĠĠĠ Ġtheme . resolve Attribute ( R . attr . root View Background , Ġroot View Background , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġtheme . resolve Attribute ( R . attr . item View Background , ĠitemView Background , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġtheme . resolve Attribute ( R . attr . textColor Primary , ĠtextColor Primary , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġll _ root !!. setBackground Resource ( root View Background . resourceId ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresources Ġ= Ġresources ĊĠĠĠĠĠĠĠ Ġval Ġchild Count Ġ= Ġre cycler _ view !!. child Count ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcard View Ġ= Ġre cycler _ view !!. getChild At ( i ). card view ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard View . setBackground Resource ( item View Background . resourceId ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard View . tv _ name . setTextColor ( resources . getColor ( textColor Primary . resourceId )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard View . tv _ followers Count . setTextColor ( resources . getColor ( textColor Primary . resourceId )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard View . tv _ posts Count . setTextColor ( resources . getColor ( textColor Primary . resourceId )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard View . tv _ intro . setTextColor ( resources . getColor ( textColor Primary . resourceId )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠRecyclerView Util . invalidate Cache Item ( recycler _ view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Inject () Ġ{ ĊĠĠĠĠĠĠĠ ĠD agger Z hu an lan Component . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. app Component ( App . s App Component ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. zh uan lan Module ( Z hu an lan Module ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (). inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġattach Layout Id () Ġ= ĠR . layout . fragment _ zh uan lan ĊĊĠĠĠ Ġoverride Ġfun Ġinit Views ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . recycler _ view . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġview . recycler _ view . layout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġview . refresh _ layout . setColor Scheme Colors ( m Setting Helper . color ) ĊĠĠĠĠĠĠĠ Ġview . refresh _ layout . setOn Refresh Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġm SharedPreferences . unregister On Shared Preference ChangeListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Shared Preference Changed ( shared Preferences : ĠSharedPreferences ?, Ġkey : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrefresh _ layout . setColor Scheme Colors ( m Setting Helper . color ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsubscribe UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Model . m List . observe ( this , ĠObserver < List < Z hu an lan Bean >> Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġlist Ġ&& Ġlist . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Set Adapter ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Show Net Error () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġm Model . isLoading . observe ( this , ĠObserver < Boolean > Ġ{ Ġa Boolean Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( a Boolean !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Show Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Hide Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġm Model . is Refresh UI . observe ( this , ĠObserver < Boolean > Ġ{ Ġrefresh UI () Ġ}) ĊĠĠĠĠĠĠĠ Ġm SharedPreferences . register On Shared Preference ChangeListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Set Adapter ( list : ĠList < Z hu an lan Bean >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Adapter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter Ġ= ĠMulti Type Adapter ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter ?. register ( Z hu an lan Bean :: class . java , ĠZ hu an lan View Binder ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler _ view . adapter Ġ= Ġm Adapter ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Refresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Model . handle Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Show Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġrefresh _ layout . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġre cycler _ view . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Hide Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġrefresh _ layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġre cycler _ view . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Show Net Error () Ġ{ ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( refresh _ layout , ĠR . string . network _ error , ĠSn ackbar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġrefresh _ layout . isEnabled Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠARG UMENT _ TYPE Ġ= Ġ" ARGUMENT _ TYPE " ĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠTAG Ġ= Ġ" Z hu an lan View " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( type : ĠInt ): ĠZ hu an lan View Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . put Int ( ARGUMENT _ TYPE , Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠZ hu an lan View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ