package Ġcom . ly c . g ank . utils Ċ Ċ import Ġandroid . support . annotation . Check Result Ċ import Ġcom . ly c . g ank . utils . Load State . Empty . load More Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġh gj Ġon Ġ 0 4 / 0 1 / 2 0 1 8 . Ċ Ġ* Ċ Ġ* ĠLoad State Ġstate Ġtransition Ġdiagram : Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ---------------- + Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ ĠEmpty Ġ( init ) Ġ Ġ| Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ---------------- + Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult ( true ) ĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠ Ġ| Ġresult ( false ) Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ---------------- ---------+ ĠĠĠĠĠĠĠĠ Ġ| Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv Ċ Ġ* Ġ Ġ+ --------------- + Ġ Ġresult ( true ) ĠĠ Ġ+ ---------------- + ĠĠĠĠĠĠĠĠĠĠĠ Ġ+ -------------+ Ċ Ġ* Ġ Ġ| ĠĠĠ ĠHas More ĠĠĠ Ġ| Ġ< -------------- Ġ| ĠĠĠĠ ĠNo More ĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ ĠError ĠĠĠ Ġ| Ċ Ġ* Ġ Ġ+ --------------- + ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ---------------- + ĠĠĠĠĠĠĠĠĠĠĠ Ġ+ -------------+ Ċ Ġ* ĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġ^ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ^ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ^ ĠĠĠĠĠĠ Ġ| Ċ Ġ* ĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġ| Ġresult ( true ) ĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġresult ( false ) ĠĠĠĠĠĠĠĠ Ġerror Ġ| ĠĠĠĠĠĠ Ġ| Ċ Ġ* ĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġ| Ċ Ġ* ĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ---------------- + ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġ| Ċ Ġ* ĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġ+ --------------------- Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ-------------- + ĠĠĠĠĠĠ Ġ| Ċ Ġ* ĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ ĠLoading ĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ċ Ġ* ĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠ Ġload More ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠ Ġload More ĠĠĠĠĠ Ġ| Ċ Ġ* ĠĠĠĠ Ġ+ ---------------- ------------ > Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ< ---------------- -----+ Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ---------------- + Ċ Ġ* Ċ Ġ*/ Ċ sealed Ġclass ĠLoad State Ġ{ ĊĊĠĠĠ Ġ@ Check Result Ġopen Ġfun Ġload More (): ĠLoad State ? Ġ= Ġnull ĊĠĠĠ Ġ@ Check Result Ġopen Ġfun Ġresult ( hasMore : ĠBoolean ): ĠLoad State ? Ġ= Ġnull ĊĠĠĠ Ġ@ Check Result Ġopen Ġfun Ġerror ( msg : ĠString ): ĠLoad State ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġinit Ġstate : Ġempty Ġstub , Ġ[ load More ] Ġaction Ġis Ġdisabled ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġnext Ġstate : Ġ[ Has More ] Ġ[ No More ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġobject ĠEmpty Ġ: ĠLoad State () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġresult ( hasMore : ĠBoolean ) Ġ= Ġif Ġ( hasMore ) ĠHas More Ġelse ĠNo More ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġhas Ġmore Ġdata Ġto Ġload Ġafter Ġloading ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġprevious Ġstate : Ġ[ Empty ], Ġ[ Loading ] ĊĠĠĠĠ Ġ* Ġnext Ġstate : Ġ[ Loading ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġobject ĠHas More Ġ: ĠLoad State () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġload More () Ġ= ĠLoading ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġno Ġmore Ġdata Ġto Ġload Ġafter Ġloading ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġprevious Ġstate : Ġ[ Empty ], Ġ[ Loading ] ĊĠĠĠĠ Ġ* Ġno Ġnext Ġstate : Ġ[ Has More ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġobject ĠNo More Ġ: ĠLoad State () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġresult ( hasMore : ĠBoolean ) Ġ= Ġif Ġ( hasMore ) ĠHas More Ġelse Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġloading ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġprevious Ġstate : Ġ[ Has More ], Ġ[ Error ] ĊĠĠĠĠ Ġ* Ġnext Ġstate : Ġ[ Has More ], Ġ[ No More ], Ġ[ Error ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġobject ĠLoading Ġ: ĠLoad State () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġresult ( hasMore : ĠBoolean ) Ġ= Ġif Ġ( hasMore ) ĠHas More Ġelse ĠNo More ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġerror ( msg : ĠString ) Ġ= ĠError ( msg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġerror Ġoccurs Ġafter Ġloading ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġprevious Ġstate : Ġ[ Loading ] ĊĠĠĠĠ Ġ* Ġnext Ġstate : Ġ[ Loading ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠError ( val Ġmsg : ĠString ) Ġ: ĠLoad State () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġload More () Ġ= ĠLoading ĊĠĠĠ Ġ} Ċ } Ċ