package Ġcom . j xd . android . go home app . qu an module . fragment ĊĊ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . support . v 4 . widget . Swipe Refresh Layout Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġcom . ch ad . library . adapter . base . Base Quick Adapter Ċ import Ġcom . j xd . android . go home app . qu an module . Qu an Module Ċ import Ġcom . j xd . android . go home app . qu an module . R Ċ import Ġcom . j xd . android . go home app . qu an module . adapter . Item De vider 3 Ċ import Ġcom . j xd . android . go home app . qu an module . adapter . Order Adapter Ċ import Ġcom . j xd . android . go home app . qu an module . base . Base Fragment Ċ import Ġcom . j xd . android . go home app . qu an module . bean . Api ResultCode Enum Ċ import Ġcom . j xd . android . go home app . qu an module . bean . Order Bean Ċ import Ġcom . j xd . android . go home app . qu an module . bean . Order Status Enum Ċ import Ġcom . j xd . android . go home app . qu an module . bean . Order TypeEnum Ċ import Ġcom . j xd . android . go home app . qu an module . databinding . Qu an Fragment Order Binding Ċ import Ġcom . j xd . android . go home app . qu an module . util . show Toast Ċ import Ġcom . j xd . android . go home app . qu an module . view model . User ViewModel Ċ import Ġio . reactivex . internal . util . ArrayList Supplier Ċ import Ġkotlinx . android . synt hetic . main . qu an _ fragment _ order .* Ċ Ċ private Ġconst Ġval ĠARG _ ORDER TYPE Ġ= Ġ" order type " Ċ private Ġconst Ġval ĠARG _ ORDER STATUS = Ġ" order status " Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ* ĠUse Ġthe Ġ[ Order Fragment . newInstance ] Ġfactory Ġmethod Ġto Ċ Ġ* Ġcreate Ġan Ġinstance Ġof Ġthis Ġfragment . Ċ Ġ* Ċ Ġ*/ Ċ class ĠOrder Fragment Ġ: ĠBase Fragment () Ġ, ĠSw ipe Refresh Layout . On Refresh Listener Ġ, ĠBase Quick Adapter . Request Load More Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġorder Type : ĠInt Ġ= ĠOrder TypeEnum . P IND U OD UO . id ĊĠĠĠ Ġprivate Ġvar Ġorder Status : ĠInt Ġ= ĠOrder Status Enum . ALL . id ĊĠĠĠ Ġprivate Ġvar Ġorder Adapter Ġ: ĠOrder Adapter ?= null ĊĠĠĠ Ġprivate Ġvar Ġdata = ArrayList < Order Bean >() ĊĠĠĠ Ġvar Ġdata Binding : Qu an Fragment Order Binding ?= null ĊĠĠĠ Ġprivate Ġvar Ġpage Index : Int = 0 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorder Type Ġ= Ġit . getInt ( ARG _ ORDER TYPE Ġ, ĠOrder TypeEnum . P IND U OD UO . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorder Status Ġ= Ġit . getInt ( ARG _ ORDER STATUS Ġ, ĠOrder Status Enum . ALL . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġdata Binding Ġ= ĠData Binding Util . inflate ( in flater Ġ, ĠR . layout . qu an _ fragment _ order Ġ, Ġcontainer Ġ, Ġfalse ) ĊĠĠĠĠĠĠĠ Ġdata Binding !!. user ViewModel Ġ= ĠViewModel Providers . of ( this ). get ( User ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ Ġdata Binding !!. root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Lazy Init View ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Lazy Init View ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ// init View () ĊĊĠĠĠĠĠĠĠ Ġfetch Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġorder _ recyclerview . layout Manager = Linear LayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġorder Adapter Ġ= ĠOrder Adapter ( data ) ĊĠĠĠĠĠĠĠ Ġorder Adapter !!. setOn Load More Listener ( this Ġ, Ġorder _ recyclerview ) ĊĠĠĠĠĠĠĠ Ġorder _ recyclerview . adapter Ġ= Ġorder Adapter ĊĠĠĠĠĠĠĠ Ġorder _ refresh view . setOn Refresh Listener ( this ) ĊĠĠĠĠĠĠĠ Ġorder _ recyclerview . addItem Decoration ( Item De vider 3 ( context !! , Ġ 1 0 f Ġ, R . color . line color , Ġ 0 f )) ĊĠĠĠĠĠĠĠ Ġorder Adapter !!. empty View Ġ= ĠView . inflate ( context , ĠR . layout . layout _ empty Ġ, Ġnull ) ĊĠĠĠĠĠĠĠ Ġorder Adapter !!. empty View . findViewById < TextView >( R . id . empty _ text ). text =" æļĤ æĹł æķ°æį® " ĊĊĊĠĠĠĠĠĠĠ Ġdata Binding !!. user ViewModel !!. live Data Order List . observe ( this Ġ, ĠObserver Ġ{ Ġit -> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġorder _ refresh view . is Refresh ing = false ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it !!. result Code != ĠApi ResultCode Enum . SUCCESS . code ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( it . result Msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Observer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdatas : ĠArrayList < Order Bean >? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . result Data Ġ== Ġnull Ġ|| Ġit . result Data !!. list Ġ== null Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Adapter !!. load More End ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatas Ġ= Ġit . result Data !!. list !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġ Ġdatas . size Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Adapter !!. load More End ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Adapter !!. load More Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Index ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Adapter !!. addData ( datas ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġdata Binding !!. user ViewModel !!. has Error . observe ( this , ĠObserver Ġ{ Ġit -> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it == false ) Ġreturn @ Observer ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġorder _ refresh view . is Refresh ing = false ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( data Binding !!. user ViewModel !!. error . value !! ) ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġdata Binding !!. user ViewModel !!. loading . observe ( this Ġ, ĠObserver Ġ{ Ġit -> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorder _ progress . visibility Ġ= Ġif ( Ġit == null Ġ|| Ġ! it ) ĠView . GONE Ġelse ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// order _ recyclerview . addItem Decoration ( Re cycle Item Divider ( context !! , Linear LayoutManager . VERTICAL , 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch Data () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġdata Binding !!. user ViewModel !!. getOrder List ( Qu an Module . userId Ġ, Ġorder Status Ġ, Ġpage Index + 1 ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Refresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġpage Index = 0 ĊĠĠĠĠĠĠĠ Ġorder Adapter !!. set New Data ( ArrayList ()) ĊĠĠĠĠĠĠĠ Ġfetch Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonLoad More Requested () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġorder _ refresh view . is Refresh ing = false ĊĠĠĠĠĠĠĠ Ġdata Binding !!. user ViewModel !!. getOrder List ( Qu an Module . userId Ġ, Ġorder Status Ġ, Ġpage Index + 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠĠĠ Ġoverride Ġfun Ġget Layout ResourceId (): ĠInt Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn ĠR . layout . fragment _ order Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUse Ġthis Ġfactory Ġmethod Ġto Ġcreate Ġa Ġnew Ġinstance Ġof ĊĠĠĠĠĠĠĠĠ Ġ* Ġthis Ġfragment Ġusing Ġthe Ġprovided Ġparameters . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġparam 1 ĠParameter Ġ 1 . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġparam 2 ĠParameter Ġ 2 . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠA Ġnew Ġinstance Ġof Ġfragment ĠOrder Fragment . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( Ġorder Type : ĠInt , Ġorder Status : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrder Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( ARG _ ORDER TYPE , Ġorder Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( ARG _ ORDER STATUS , Ġorder Status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ