package Ġcom . she hu an . wan android . ui . home Ċ Ċ import Ġcom . she hu an . wan android . R Ċ import Ġcom . she hu an . wan android . adapter . Article ListAdapter Ċ import Ġcom . she hu an . wan android . base . fragment . Base M vp Fragment Ċ import Ġcom . she hu an . wan android . base . net . exception . Response Exception Ċ import Ġcom . she hu an . wan android . bean . Banner Bean Ċ import Ġcom . she hu an . wan android . bean . article . Article Bean Ċ import Ġcom . she hu an . wan android . widget . Divider Item Decoration Ċ import Ġkotlinx . android . synt hetic . main . fragment _ home .* Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . she hu an . wan android . bean . article . Datas Item Ċ import Ġcom . she hu an . wan android . ui . article . Article Activity Ċ import Ġcom . she hu an . wan android . utils . Toast Util Ċ import Ġcom . yout h . banner . Banner Ċ import Ġcom . she hu an . wan android . widget . Banner Image Loader Ċ import Ġcom . yout h . banner . Banner Config Ċ import Ġkotlinx . android . synt hetic . main . floating _ button _ layout .* ĊĊ Ċ class ĠHome Fragment Ġ: ĠBase M vp Fragment < Home Presenter Impl >(), ĠHome Contract . View Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġpage Num : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġarticle ListAdapter : ĠArticle ListAdapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcollect Data Item : ĠDat as Item ĊĠĠĠ Ġprivate Ġvar Ġcollect Position : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbanner Beans : ĠList < Banner Bean > ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbanner : ĠBanner ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠHome Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Presenter (): ĠHome Presenter Impl Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHome Presenter Impl ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Load () Ġ{ ĊĠĠĠĠĠĠĠ Ġstatus View . show Loading View () ĊĠĠĠĠĠĠĠ Ġpresenter . get Article List ( pageNum ) ĊĠĠĠĠĠĠĠ Ġpresenter . get Banner Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Layout Res ID (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . fragment _ home ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Data () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠåĪĿå§ĭåĮĸ banner ĊĠĠĠĠĠĠĠ Ġbanner Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . home _ banner _ layout , Ġhome Root Layout , Ġfalse ) Ġas ĠBanner ĊĠĠĠĠĠĠĠ Ġbanner . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Loader ( Banner Image Loader ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Delay Time ( 3 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Indicator Gravity ( Banner Config . RIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Banner Style ( Banner Config . CIR CLE _ IND IC ATOR _ TITLE _ INS IDE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Banner Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArticle Activity . start ( mContext , Ġbanner Beans [ it ]. title , Ġbanner Beans [ it ]. url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġæ Ĥ¬ æµ ® æĮīéĴ® çĤ¹åĩ» äºĭä»¶ ĊĠĠĠĠĠĠĠ Ġfloat Btn . hide () ĊĠĠĠĠĠĠĠ Ġfloat Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarticle Rv . smooth Scroll To Position ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġarticle ListAdapter Ġ= ĠArticle ListAdapter ( context , Ġnull , Ġtrue ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Loading View ( R . layout . rv _ loading _ layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Load End View ( R . layout . rv _ load _ end _ layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Load Failed View ( R . layout . rv _ load _ failed _ layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæ·»åĬł banner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Header View ( banner ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On ItemClickListener Ġ{ Ġ_, Ġdata , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArticle Activity . start ( mContext , Ġdata . title , Ġdata . link ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Item Child ClickListener ( R . id . article Collect Iv ) Ġ{ Ġ_, Ġdata , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollect Data Item Ġ= Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollect Position Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! data . collect ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . collect ( data . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . un collect ( data . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnLoad More Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . get Article List ( pageNum ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlinear LayoutManager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġlinear LayoutManager . orientation Ġ= ĠRecyclerView . VERTICAL ĊĠĠĠĠĠĠĠ Ġarticle Rv . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= Ġlinear LayoutManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( Divider Item Decoration ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġarticle ListAdapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æİ§åĪ¶ æ Ĥ¬ æµ ® æĮīéĴ® ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd On Scroll Listener ( object Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView , Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Sc rolled ( re cyclerView , Ġdx , Ġdy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( linear LayoutManager . find Last Visible Item Position () Ġ> Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfloat Btn . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfloat Btn . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit Status View ( home Root Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Load () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Banner Success ( data : ĠList < Banner Bean >) Ġ{ ĊĠĠĠĠĠĠĠ Ġstatus View . show ContentView () ĊĠĠĠĠĠĠĠ Ġbanner Beans Ġ= Ġdata ĊĠĠĠĠĠĠĠ Ġval Ġimages Ġ= Ġarray ListOf < String >() ĊĠĠĠĠĠĠĠ Ġval Ġtitles Ġ= Ġarray ListOf < String >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( banner Bean Ġin Ġdata ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimages . add ( banner Bean . image Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitles . add ( banner Bean . title ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbanner . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Images ( images ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Banner Titles ( titles ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Banner Error ( e : ĠResponse Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstatus View . show Error View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Article List Success ( data : ĠArticle Bean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pageNum Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarticle ListAdapter . set New Data ( data . datas ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarticle ListAdapter . set Load More Data ( data . datas ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpage Num ++ ĊĠĠĠĠĠĠĠ Ġif Ġ( pageNum Ġ== Ġdata . page Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarticle ListAdapter . load End () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Article List Error ( e : ĠResponse Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarticle ListAdapter . load Failed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Collect Success ( data : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcollect Data Item . collect Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġarticle ListAdapter . change ( collect Position Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠToast Util . show ( mContext , ĠR . string . collect _ success ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Collect Error ( e : ĠResponse Exception ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Un collect Success ( data : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcollect Data Item . collect Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġarticle ListAdapter . change ( collect Position Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠToast Util . show ( mContext , ĠR . string . un collect _ success ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Un collect Error ( e : ĠResponse Exception ) Ġ{ ĊĊĠĠĠ Ġ} Ċ } Ċ