package Ġcom . money tree . app . ui . rep urchase Info Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . money tree . app . R Ċ import Ġcom . money tree . app . common . NS Constants Ċ import Ġcom . money tree . app . common . NS Fragment Ċ import Ġcom . money tree . app . common . callbacks . NS Page Change Callback Ċ import Ġcom . money tree . app . databinding . Ns Fragment Rep urchase Info Binding Ċ Ċ class ĠNS Re Purchase Info Fragment Ġ: ĠNS Fragment () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġrep urchase ListModel : ĠNS Re Purchase Info ViewModel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Provider ( this ). get ( NS Re Purchase Info ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠN s Fragment Rep urchase Info Binding ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġrep urchase Binding Ġget () Ġ= Ġ_ binding !! ĊĠĠĠ Ġprivate Ġvar Ġrep urchase ListAdapter : ĠNS Re Purchase Info Re cycle Adapter ? Ġ= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( bundle : ĠBundle ?) Ġ= ĠNS Re Purchase Info Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= Ġbundle ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( rep urchase ListModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrep urchase Id Ġ= Ġit . getString ( NS Constants . KEY _ REP UR CH ASE _ INFO ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠN s Fragment Rep urchase Info Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġview Created () ĊĠĠĠĠĠĠĠ Ġset Listener () ĊĠĠĠĠĠĠĠ Ġreturn Ġrep urchase Binding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠView Ġcreated ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġview Created () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( rep urchase Binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( layout Header ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcl Back . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Header Back . text Ġ= Ġactivity . resources . getString ( R . string . rep urchase _ info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv Back . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv Search . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv AddNew . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Rep urchase Adapter () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġobserve ViewModel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġlistener ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( rep urchase Binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( rep urchase ListModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs rl Refresh . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Index Ġ= Ġ" 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Re Purchase List Data ( page Index , Ġrep urchase Id !! , Ġfalse , Ġis Bottom Progress Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( layout Header ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcl Back . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Press () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTo Ġadd Ġdata Ġof Ġrep urchase Ġin Ġlist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Rep urchase Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( rep urchase Binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( rep urchase ListModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv Rep urchase List . layout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrep urchase ListAdapter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNS Re Purchase Info Re cycle Adapter ( activity , Ġobject Ġ: ĠNS Page Change Callback { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Change () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( re Purchase Response !!. next Page ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage : ĠInt Ġ= Ġre Purchase InfoList . size / NS Constants . P AG INATION Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Index Ġ= Ġpage . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Re Purchase List Data ( page Index , Ġrep urchase Id !! , Ġtrue , Ġis Bottom Progress Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv Rep urchase List . adapter Ġ= Ġrep urchase ListAdapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Index Ġ= Ġ" 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Re Purchase List Data ( page Index , Ġrep urchase Id !! , Ġtrue , Ġis Bottom Progress Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbottom Progress ( is Show Progress : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( rep urchase Binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv Progress . visibility Ġ= Ġif Ġ( is Show Progress ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġrep urchase Ġdata ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġis Rep urchase Ġwhen Ġdata Ġavailable Ġit 's Ġtrue ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Re Purchase Data ( is Rep urchase : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( rep urchase ListModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrep urchase Data Manage ( is Rep urchase ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Rep urchase ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrep urchase ListAdapter !!. clear Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrep urchase ListAdapter !!. update Data ( re Purchase InfoList ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe purchase Ġdata Ġmanage ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġis Rep urchase Data Available Ġwhen Ġrep urchase Ġavailable Ġit 's Ġvisible ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrep urchase Data Manage ( is Rep urchase Data Available : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( rep urchase Binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv Rep urchase List . visibility Ġ= Ġif Ġ( is Rep urchase Data Available ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcl Rep urchase NotFound . visibility Ġ= Ġif Ġ( is Rep urchase Data Available ) ĠView . GONE Ġelse ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTo Ġobserve Ġthe Ġview Ġmodel Ġfor Ġdata Ġchanges ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġobserve ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( rep urchase ListModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( rep urchase Binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Progress Showing . observe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Lifecycle Owner ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġshould Show Progress Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Progress ( should Show Progress ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Bottom Progress Showing . observe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Lifecycle Owner ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġis Bottom Progress Showing Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Progress ( is Bottom Progress Showing ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Re Purchase Data Available . observe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Lifecycle Owner ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġis Re Purchase Data Available Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs rl Refresh . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Re Purchase Data ( is Re Purchase Data Available ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure ErrorMessage . observe ( view Lifecycle Owner ) Ġ{ ĠerrorMessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs rl Refresh . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow AlertDialog ( errorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Errors . observe ( view Lifecycle Owner ) Ġ{ Ġapi Errors Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs rl Refresh . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse And Show ApiError ( api Errors ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno Network Alert . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs rl Refresh . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow No Network AlertDialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . no _ network _ available ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . network _ unreachable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Error Id . observe ( view Lifecycle Owner ) Ġ{ Ġerror Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow AlertDialog ( getString ( error Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }