package Ġandroid . lo ren wang . common base frame . mvp Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . lo ren wang . common base frame . Ac b fl w Base Application Ċ import Ġandroid . lo ren wang . common base frame . R Ċ import Ġandroid . lo ren wang . common base frame . adapter . Ac b fl w BaseType Ċ import Ġandroid . lo ren wang . common base frame . bean . Ac b fl w Page Show ViewData Bean Ċ import Ġandroid . lo ren wang . common base frame . network . callback . Ac b fl w Net Options By Model Callback Ċ import Ġandroid . lo ren wang . common base frame . network . callback . Ac b fl w Rep Options By Presenter Callback Ċ import Ġandroid . lo ren wang . tools . At lw Config Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġjav ab ase . lo ren wang . tools . common . J tl w Class Utils Ċ import Ġkotlin base . lo ren wang . tools . K tt lw Config Ċ import Ġkotlin base . lo ren wang . tools . common . bean . K tt lw Base Net Response Bean Ċ import Ġkotlin base . lo ren wang . tools . common . bean . K tt lw Net Page Response Bean Ċ import Ġkotlin base . lo ren wang . tools . extend . k tt lw Get NotEmpty Data Ċ Ċ /** Ċ Ġ* Ġ åĬŁèĥ½ ä½ľçĶ¨ ï¼ļ åŁºç¡Ģ åĬŁèĥ½ present Ċ Ġ* Ġ åĪĿå§ĭ æ³¨éĩĬ æĹ¶éĹ´ ï¼ļ Ġ 2 0 2 1 / 1 / 1 7 Ġ 8 : 5 3 Ġä¸ĭåįĪ Ċ Ġ* ĠåĪĽå»º äºº ï¼ļ çİĭ äº ® ï¼Ī L oren ï¼ī Ċ Ġ* Ġ æĢĿ è·¯ ï¼ļ Ċ Ġ* Ġæĸ¹æ³ķ ï¼ļ Ċ Ġ* Ġ æ³¨æĦı ï¼ļ Ċ Ġ* Ġä¿®æĶ¹ äºº ï¼ļ Ċ Ġ* Ġä¿®æĶ¹ æĹ¶éĹ´ ï¼ļ Ċ Ġ* Ġ å¤ĩ æ³¨ ï¼ļ Ċ Ġ* Ċ Ġ* Ġ@ author Ġ çİĭ äº ® ï¼Ī L oren ï¼ī Ċ Ġ*/ Ċ abstract Ġclass ĠA cb fl w Base Presenter < V Ġ: ĠA cb fl w Base View >( var Ġbase View : ĠV ) Ġ{ ĊĊĠĠĠ Ġvar Ġactivity : ĠActivity ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( base View Ġis ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġbase View Ġas ĠActivity ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġé»ĺè®¤ é¦ĸé¡µ é¡µ çłģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġval Ġdefault First Page Index Ġ= ĠK tt lw Config . DEFAULT _ NET _ PAGE _ INDEX ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġé»ĺè®¤ æ¯ı é¡µ æķ°éĩı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġval Ġdefault Page Count Ġ= ĠK tt lw Config . DEFAULT _ NET _ PAGE _ SIZE ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ éĩĬæĶ¾ æīĢæľī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrelease Presenter () Ġ{ ĊĠĠĠĠĠĠĠ Ġrelease Presenter Child () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ éĩĬæĶ¾ æīĢæľīçļĦ ç»§æī¿ è¯¥ presenter çļĦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġrelease Presenter Child () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ é¡µ çłģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Page Index ( page Index : ĠInt ?): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpage Index Ġ?: Ġdefault First Page Index ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ é»ĺè®¤ é¡µéĿ¢ æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Page Count ( page Count : ĠInt ?): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpage Count Ġ?: Ġdefault Page Count ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæĺ¯åĲ¦ æĺ¯ æľĢåĲİ ä¸Ģ é¡µ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġjudge Last Page ( currentPage : ĠInt , Ġtotal Page : ĠInt , Ġtotal : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpage Ġ= ĠcurrentPage ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( total Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( default First Page Index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ page ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage . compareTo ( total Page ) Ġ== Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæĺ¯åĲ¦ æĺ¯ ç¬¬ä¸Ģ é¡µ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġjudge First Page ( currentPage : ĠInt ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠcurrentPage Ġ== Ġnull Ġ|| ĠInteger . compare ( currentPage , Ġdefault First Page Index ) Ġ== Ġ 0 ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ åĪĹè¡¨ å±ķç¤º æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T , ĠR Ġ: ĠK tt lw Net Page Response Bean < T >, ĠPD Ġ: ĠA cb fl w Page Show ViewData Bean < T >, ĠDATA Ġ: ĠK tt lw Base Net Response Bean < R >> Ġparams List Data ( page : ĠInt ?, ĊĠĠĠĠĠĠĠ Ġcount : ĠInt ?, Ġbody : ĠDATA ): ĠPD Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Index Ġ= Ġget Page Index ( body . data ?. page Index . k tt lw Get NotEmpty Data ( page . k tt lw Get NotEmpty Data ( default First Page Index ))) ĊĠĠĠĠĠĠĠ Ġval Ġpage Count Ġ= Ġget Page Count ( body . data ?. pageSize . k tt lw Get NotEmpty Data ( count . k tt lw Get NotEmpty Data ( default Page Count ))) ĊĠĠĠĠĠĠĠ Ġval Ġentity Ġ= Ġget Page Show Data Bean < T , ĠPD >() ĊĠĠĠĠĠĠĠ Ġentity . is Last Page Data Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjudge Last Page ( page Index , Ġbody . data ?. sum Page Count . k tt lw Get NotEmpty Data ( 0 ), Ġbody . data ?. sum Data Count . k tt lw Get NotEmpty Data ( 0 )) ĊĠĠĠĠĠĠĠ Ġentity . is First Page Data Ġ= Ġjudge First Page ( page Index ) ĊĠĠĠĠĠĠĠ Ġentity . currentPage Index Ġ= Ġpage Index ĊĠĠĠĠĠĠĠ Ġentity . currentPage Count Ġ= Ġpage Count ĊĠĠĠĠĠĠĠ Ġentity . total Ġ= Ġbody . data ?. sum Data Count . k tt lw Get NotEmpty Data ( 0 ) ĊĠĠĠĠĠĠĠ Ġentity . total Page Ġ= Ġbody . data ?. sum Page Count . k tt lw Get NotEmpty Data ( 0 ) ĊĠĠĠĠĠĠĠ Ġentity . list Ġ= Ġbody . data ?. data List ĊĠĠĠĠĠĠĠ Ġreturn Ġentity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ åĪĹè¡¨ å±ķç¤º æķ°æį® ( åŁºç¡Ģ éĥ¨åĪĨ æķ°æį® ï¼Į ä¸į åĮħåĲ« åĪĹè¡¨ æķ° ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T , ĠR , ĠP Ġ: ĠK tt lw Net Page Response Bean < T >, ĠPD Ġ: ĠA cb fl w Page Show ViewData Bean < R >, ĠDATA Ġ: ĠK tt lw Base Net Response Bean < P >> Ġparams List Base Data ( page : ĠInt ?, ĊĠĠĠĠĠĠĠ Ġcount : ĠInt ?, Ġbody : ĠDATA ): ĠPD Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Index Ġ= Ġget Page Index ( body . data ?. page Index . k tt lw Get NotEmpty Data ( page . k tt lw Get NotEmpty Data ( default First Page Index ))) ĊĠĠĠĠĠĠĠ Ġval Ġpage Count Ġ= Ġget Page Count ( body . data ?. pageSize . k tt lw Get NotEmpty Data ( count . k tt lw Get NotEmpty Data ( default Page Count ))) ĊĠĠĠĠĠĠĠ Ġval Ġentity Ġ= Ġget Page Show Data Bean < R , ĠPD >() ĊĠĠĠĠĠĠĠ Ġentity . is Last Page Data Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjudge Last Page ( page Index , Ġbody . data ?. sum Page Count . k tt lw Get NotEmpty Data ( 0 ), Ġbody . data ?. sum Data Count . k tt lw Get NotEmpty Data ( 0 )) ĊĠĠĠĠĠĠĠ Ġentity . is First Page Data Ġ= Ġjudge First Page ( page Index ) ĊĠĠĠĠĠĠĠ Ġentity . currentPage Index Ġ= Ġpage Index ĊĠĠĠĠĠĠĠ Ġentity . currentPage Count Ġ= Ġpage Count ĊĠĠĠĠĠĠĠ Ġentity . total Ġ= Ġbody . data ?. sum Data Count . k tt lw Get NotEmpty Data ( 0 ) ĊĠĠĠĠĠĠĠ Ġentity . total Page Ġ= Ġbody . data ?. sum Page Count . k tt lw Get NotEmpty Data ( 0 ) ĊĠĠĠĠĠĠĠ Ġentity . list Ġ= Ġarray ListOf () ĊĠĠĠĠĠĠĠ Ġreturn Ġentity ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĪĹè¡¨ è½¬æį¢ ä¸º base type ç±»åŀĭ åĪĹè¡¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T , ĠBT Ġ: ĠA cb fl w BaseType < T >> Ġlist To Base TypeList (@ Layout Res Ġshow Layout : ĠInt , Ġold List : ĠArrayList < T >): ĠArrayList < BT > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist BaseType Ġ= ĠArrayList < BT >() ĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġold List . iterator () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist BaseType . add ( getBase Type ( show Layout , Ġiterator . next ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist BaseType ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ åĵįåºĶ æķ°æį® åĽŀè°ĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< DATA , ĠRE P Ġ: ĠK tt lw Base Net Response Bean < DATA >, ĠCALL Ġ: ĠA cb fl w Rep Options By Presenter Callback < REP >, ĠM CALL Ġ: ĠA cb fl w Net Options By Model Callback < DATA , ĠRE P >> Ġget Net Options Callback ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , Ġdata IsNull : ĠBoolean ?, Ġrep Options Callback : ĠCALL ): ĠM CALL Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Net Options Callback ( request Code Ġ= Ġrequest Code , Ġdata IsNull Ġ= Ġdata IsNull , Ġshow Loading Ġ= Ġtrue , Ġsuccess Hide Loading Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Hide Loading Ġ= Ġtrue , Ġallow Loading Back Finish Page Ġ= Ġfalse , Ġrep Options Callback Ġ= Ġrep Options Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ åĵįåºĶ æķ°æį® åĽŀè°ĥ ĊĠĠĠĠ Ġ* Ġ@ param Ġsuccess Hide Loading Ġ æĪĲåĬŁ æĺ¯åĲ¦ éļĲèĹı åĬłè½½ ä¸Ń ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< DATA , ĠRE P Ġ: ĠK tt lw Base Net Response Bean < DATA >, ĠCALL Ġ: ĠA cb fl w Rep Options By Presenter Callback < REP >, ĠM CALL Ġ: ĠA cb fl w Net Options By Model Callback < DATA , ĠRE P >> Ġget Net Options Callback ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , Ġdata IsNull : ĠBoolean ?, Ġsuccess Hide Loading : ĠBoolean , Ġrep Options Callback : ĠCALL ): ĠM CALL Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Net Options Callback ( request Code Ġ= Ġrequest Code , Ġdata IsNull Ġ= Ġdata IsNull , Ġshow Loading Ġ= Ġtrue , Ġsuccess Hide Loading Ġ= Ġsuccess Hide Loading , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Hide Loading Ġ= Ġtrue , Ġallow Loading Back Finish Page Ġ= Ġfalse , Ġrep Options Callback Ġ= Ġrep Options Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ åĵįåºĶ æķ°æį® åĽŀè°ĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< DATA , ĠRE P Ġ: ĠK tt lw Base Net Response Bean < DATA >, ĠCALL Ġ: ĠA cb fl w Rep Options By Presenter Callback < REP >, ĠM CALL Ġ: ĠA cb fl w Net Options By Model Callback < DATA , ĠRE P >> Ġget Net Options Callback ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , Ġrep Options Callback : ĠCALL ): ĠM CALL Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Net Options Callback ( request Code Ġ= Ġrequest Code , Ġdata IsNull Ġ= Ġfalse , Ġshow Loading Ġ= Ġtrue , Ġsuccess Hide Loading Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Hide Loading Ġ= Ġtrue , Ġallow Loading Back Finish Page Ġ= Ġfalse , Ġrep Options Callback Ġ= Ġrep Options Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ åĵįåºĶ æķ°æį® åĽŀè°ĥ ĊĠĠĠĠ Ġ* Ġ@ param Ġshow Loading Ġæĺ¯åĲ¦ æĺ¾ç¤º åĬłè½½ ä¸Ń ĊĠĠĠĠ Ġ* Ġ@ param Ġsuccess Hide Loading Ġ æĪĲåĬŁ æĺ¯åĲ¦ éļĲèĹı åĬłè½½ ä¸Ń ĊĠĠĠĠ Ġ* Ġ@ param Ġerror Hide Loading Ġ å¼Ĥå¸¸ æĺ¯åĲ¦ éļĲèĹı åĬłè½½ ä¸Ń ĊĠĠĠĠ Ġ* Ġ@ param Ġallow Loading Back Finish Page Ġ æĺ¾ç¤º åĬłè½½ ä¸Ń æĺ¯ æĺ¯åĲ¦ åħģè®¸ åĲİ éĢĢ ç»ĵæĿŁ å½ĵåīį é¡µéĿ¢ ĊĠĠĠĠ Ġ* Ġ@ param Ġrep Options Callback Ġæķ°æį® æĵįä½ľ åĲİçļĦ åĽŀè°ĥ ĊĠĠĠĠ Ġ* Ġ@ return Ġ ç½ĳç»ľ è¯·æ±Ĥ åĽŀè°ĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< DATA , ĠRE P Ġ: ĠK tt lw Base Net Response Bean < DATA >, ĠCALL Ġ: ĠA cb fl w Rep Options By Presenter Callback < REP >, ĠM CALL Ġ: ĠA cb fl w Net Options By Model Callback < DATA , ĠRE P >> Ġget Net Options Callback ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , Ġdata IsNull : ĠBoolean ?, Ġshow Loading : ĠBoolean , Ġsuccess Hide Loading : ĠBoolean , Ġerror Hide Loading : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġallow Loading Back Finish Page : ĠBoolean , Ġrep Options Callback : ĠCALL ): ĠM CALL Ġ{ ĊĠĠĠĠĠĠĠ Ġ// æĸ°å¢ŀ presenter è®°å½ķ ĊĠĠĠĠĠĠĠ ĠA cb fl w Base Application . application ?. add Presenter ( activity , Ġthis ) ĊĠĠĠĠĠĠĠ Ġval Ġentity Ġ= Ġget Rep Options By Presenter Callback < DATA , ĠRE P , ĠCALL , ĠM CALL >( rep Options Callback ) ĊĠĠĠĠĠĠĠ Ġentity . set All Fun ({ Ġdto Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! activity ?. is Finish ing . k tt lw Get NotEmpty Data ( false )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( success Hide Loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase View . hide Base Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data IsNull Ġ== Ġnull Ġ|| Ġ! data IsNull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dto . data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrep Options Callback . view Options Data ( dto ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase View . net Req Fail ( request Code , ĠAt lw Config . now Application . getString ( R . string . empty _ data _ default )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrep Options Callback . rep Data Error ( null , ĠAt lw Config . now Application . getString ( R . string . empty _ data _ default )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrep Options Callback . view Options Data ( dto ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! activity ?. is Finish ing . k tt lw Get NotEmpty Data ( false )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error Hide Loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase View . hide Base Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase View . net Req Fail ( request Code , Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrep Options Callback . rep Data Error ( null , Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase View . show Base Loading ( allow Loading Back Finish Page ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġcode , Ġmessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase View . user Login Status Error ( code , Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġbean , Ġtotal , Ġnow Upload , Ġprocess Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrep Options Callback . file Up Load Process ( bean , Ġtotal , Ġnow Upload , Ġprocess ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġentity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ è¯·æ±Ĥ model è®°å½ķ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > ĠgetModel ( cls : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠJ tl w Class Utils . getInstance (). getClass Entity ( cls ) ĊĠĠĠĠĠĠĠ Ġ// æĸ°å¢ŀ model åĪĿå§ĭåĮĸ è®°å½ķ ĊĠĠĠĠĠĠĠ ĠA cb fl w Base Application . application ?. add Presenter ( activity , Ġthis ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmodel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ é»ĺè®¤ å®ŀä¾ĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġ< DATA , ĠRE P Ġ: ĠK tt lw Base Net Response Bean < DATA >, ĠCALL Ġ: ĠA cb fl w Rep Options By Presenter Callback < REP >, ĠM CALL Ġ: ĠA cb fl w Net Options By Model Callback < DATA , ĠRE P >> Ġget Rep Options By Presenter Callback ( ĊĠĠĠĠĠĠĠ Ġrep Options Callback : ĠCALL ): ĠM CALL ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè¿ĶåĽŀ åĪĹè¡¨ BaseType æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġ< T , ĠBT Ġ: ĠA cb fl w BaseType < T >> Ġget BaseType (@ Layout Res Ġshow Layout : ĠInt , Ġdata : ĠT ): ĠBT ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ åĪĨé¡µ æĺ¾ç¤º æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġ< R , ĠPD Ġ: ĠA cb fl w Page Show ViewData Bean < R >> Ġget Page Show Data Bean (): ĠPD Ċ } Ċ