package Ġcn . xin . lib . base . presenter Ċ Ċ import Ġandroid . util . Log Ċ import Ġcn . xin . lib . mvp . Base List Presenter Ċ import Ġcn . xin . lib . mvp . I Base ListView Ċ import Ġcn . xin . lib . net . Http ListResult Ċ import Ġcn . xin . lib . net . Http Result Observer Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ Ċ internal Ġconst Ġval ĠPARAM _ COUNT Ġ= Ġ" count " Ċ internal Ġconst Ġval ĠPARAM _ START Ġ= Ġ" start " Ċ Ċ /** Ċ Ġ* Ġ@ author ĠJ ian xin Ġn . z jx @ 1 6 3 . com Ċ Ġ* Ġ@ date Ġ 2 0 1 9 - 0 8 - 3 1 Ġ 0 3 1 Ġä¸ĭåįĪ Ġ 0 5 : 0 7 Ċ Ġ* ĠSmall M VP Ġcn . xin . lib . base . presenter Ċ Ġ*/ Ċ abstract Ġclass ĠBase App List Presenter < T , ĠV Ġ: ĠI Base ListView < T >> Ġ: ĠBase List Presenter < T , ĠV >() Ġ{ ĊĊĠĠĠ Ġoverride Ġlateinit Ġvar Ġview : ĠV ĊĊĠĠĠ Ġprotected Ġopen Ġvar Ġcount Ġ= Ġ 2 0 ĊĊĠĠĠ Ġprotected Ġopen Ġvar Ġstart Ġ= Ġ 0 ĊĊĠĠĠ Ġ/** æĺ¯åĲ¦ æŃ£åľ¨ åĪ·æĸ° */ ĊĠĠĠ Ġvar Ġis Refresh ing Ġ= Ġfalse ĊĊĠĠĠ Ġvar Ġhas More Ġ= Ġtrue ĊĊĠĠĠ Ġ/** å¼º åĪ¶ åĪ·æĸ° */ ĊĠĠĠ Ġvar Ġforce Refresh Ġ= Ġfalse ĊĊĠĠĠ Ġvar Ġm List Disposable : ĠDis posable ? Ġ= Ġnull ĊĊĠĠĠ Ġfun ĠgetNext Start (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġstart Ġ+ Ġcount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload New List () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// å¼º åĪ¶ åĪ·æĸ° ĊĠĠĠĠĠĠĠ Ġif Ġ( force Refresh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åıĸæ¶Ī ä¸Ĭ æ¬¡ åĪ·æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispose ( m List Disposable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Refresh ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġis Refresh ing Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġm List Disposable Ġ= ĠgetList Disposable ( getList Result Observer ()) ĊĠĠĠĠĠĠĠ Ġadd Disposable ( m List Disposable ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload More List () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isNull Or Disposed ( m List Disposable )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! hasMore Ġ&& Ġ! is Refresh ing ) Ġ{ Ġ// æ²¡æľī æĽ´å¤ļ ï¼Į ä¹Ł ä¸įæĺ¯ åĪ·æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Base App List Presenter ", Ġ"${ ! hasMore } Ġ&& Ġ${ ! is Refresh ing }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm List Disposable Ġ= Ġget More List Disposable ( getList Result Observer ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Disposable ( m List Disposable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun ĠgetList Disposable ( observer : ĠHttp ListResult Observer ): ĠDis posable ? ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġget More List Disposable ( observer : ĠHttp ListResult Observer ): ĠDis posable ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun ĠgetList Result Observer (): ĠHttp ListResult Observer Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHttp ListResult Observer ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġcheck Has More ( list : ĠList < T >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlist . size Ġ== Ġcount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġcreate Params ( ĊĠĠĠĠĠĠĠ Ġextra Params : ĠMap < String , ĠAny ?> ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġstart : ĠInt Ġ= Ġthis . start , ĊĠĠĠĠĠĠĠ Ġcount : ĠInt Ġ= Ġthis . count ĊĠĠĠ Ġ): ĠMutable Map < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmutable Map Of < String , ĠAny ? >( PARAM _ START Ġto Ġstart , ĠPARAM _ COUNT Ġto Ġcount ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( extra Params Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput All ( extra Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġinner Ġclass ĠHttp ListResult Observer ( private Ġval Ġm View : ĠI Base ListView < T > ?) Ġ: ĊĠĠĠĠĠĠĠ ĠHttp Result Observer < Http ListResult < T >>() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Refresh ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. refresh Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Result ( result : ĠHttp ListResult < T >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġresult . subjects ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġresult . start ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Refresh ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show New List ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show More List ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. load Complete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas More Ġ= Ġcheck Has More ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! hasMore ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. load More End () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onError ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Refresh ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. load Fail () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. load More Fail () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }