package Ġcom . lee . le ew an android . ui . home Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . lee . le ew an android . R Ċ import Ġcom . lee . le ew an android . entities . article . Article Item Data Ċ import Ġcom . lee . le ew an android . entities . article . Banner Data Ċ import Ġcom . lee . le ew an android . ui . article . Article Detail Activity Ċ import Ġcom . lee . le ew an android . ui . base . Base M vp Fragment Ċ import Ġcom . lee . le ew an android . utils . Logger Ċ import Ġcom . lee . le ew an android . widget . Banner G lide Image Loader Ċ import Ġcom . yout h . banner . Banner Config Ċ import Ġcom . yout h . banner . Transformer Ċ import Ġkotlinx . android . synt hetic . main . fragment _ main _ page .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ main _ page . view .* Ċ import Ġkotlinx . android . synt hetic . main . main _ head _ banner .* Ċ Ċ class ĠHome Fragment Ġ: ĠBase M vp Fragment < Contract . View , ĠHome Presenter >(), ĠContract . View Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠTAG Ġ= ĠHome Fragment :: class . java . simple Name ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠHome Fragment Ġ= ĠHome Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Adapter : ĠArticle ListAdapter ĊĊĠĠĠ Ġoverride Ġval Ġm Presenter : ĠHome Presenter Ġ= ĠHome Presenter ( this ) ĊĊĠĠĠ Ġoverride Ġfun Ġshow B anners ( b anners : ĠList < Banner Data > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġb anners ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Banner Ġ= Ġhead _ banner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbanner ImageList Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Banner Title List Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Banner Url List Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbanner IdList Ġ= ĠArrayList < Int >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( banner Data Ġin Ġit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbanner Data . title ?. let Ġ{ Ġtitle 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Banner Title List . add ( title 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġm Banner Title List . add ("") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbanner Data . image Path ?. let Ġ{ Ġimage Path 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbanner ImageList . add ( image Path 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġbanner ImageList . add ("") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbanner Data . url ?. let Ġ{ Ġurl 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Banner Url List . add ( url 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġm Banner Url List . add ("") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbanner IdList . add ( banner Data . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® banner æł·å¼ı ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Banner . set Banner Style ( Banner Config . NUM _ IND IC ATOR _ TITLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® åĽ¾çīĩ åĬłè½½ åĻ¨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Banner . setImage Loader ( Banner G lide Image Loader ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® åĽ¾çīĩ éĽĨåĲĪ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Banner . set Images ( banner ImageList ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® banner åĬ¨çĶ» æķĪæŀľ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Banner . set Banner Animation ( Transformer . Accordion ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® æłĩé¢ĺ éĽĨåĲĪ ï¼Ī å½ĵ banner æł·å¼ı æľī æĺ¾ç¤º title æĹ¶ ï¼ī ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Banner . set Banner Titles ( m Banner Title List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® èĩªåĬ¨ è½® æĴŃ ï¼Į é»ĺè®¤ä¸º true ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Banner . is Auto Play ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® è½® æĴŃ æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Banner . set Delay Time ( 2 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® æĮĩ ç¤º åĻ¨ ä½įç½® ï¼Ī å½ĵ banner æ¨¡å¼ı ä¸Ń æľī æĮĩ ç¤º åĻ¨ æĹ¶ ï¼ī ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Banner . set Indicator Gravity ( Banner Config . CENTER ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Banner . setOn Banner Listener Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArticle Detail Activity . navigation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġbanner IdList [ i ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Banner Title List [ i ], Ġm Banner Url List [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// banner è®¾ç½® æĸ¹æ³ķ åħ¨éĥ¨ è°ĥçĶ¨ å®Į æ¯ķ æĹ¶ æľĢåĲİ è°ĥçĶ¨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Banner . start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Top Article ( top Article : ĠList < Article Item Data > ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġtop Article ?. toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Articles ( articles : ĠList < Article Item Data > ?, Ġis Refresh : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġarticles ?. toString ()) ĊĠĠĠĠĠĠĠ Ġarticles ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Refresh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . replace Data ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . addData ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit View ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Refresh Layout ( view ) ĊĠĠĠĠĠĠĠ Ġinit RecyclerView ( view ) ĊĠĠĠĠĠĠĠ Ġm Presenter . refresh Layout ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Id (): ĠInt Ġ= ĠR . layout . fragment _ main _ page ĊĊĠĠĠ Ġprivate Ġfun Ġinit RecyclerView ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . rv _ home _ pager . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter Ġ= ĠArticle ListAdapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ article _ card , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Banner Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Inflater . inflate ( R . layout . main _ head _ banner , Ġthis @ run , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Header View ( header Banner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On Item Child ClickListener Ġ{ Ġ_, Ġchild , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Child Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On ItemClickListener Ġ{ Ġ_, Ġ_, Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Article Detail Activity ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġm Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Article Detail Activity ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . data [ position ]?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArticle Detail Activity . navigation ( this , Ġtrue , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclick Child Event ( view : ĠView ?, Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view ?. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . tv _ article _ chapter Name Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . iv _ article _ like Ġ-> Ġcollect Click Event ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . tv _ article _ tag Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcollect Click Event ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Adapter . data [ position ]. collect ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . data [ position ]. collect Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . setData ( position , Ġm Adapter . data [ position ]) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . data [ position ]. collect Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . setData ( position , Ġm Adapter . data [ position ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Refresh Layout ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . smart _ refresh _ layout . setOn Refresh Listener Ġ{ Ġrefresh Layout Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Presenter . refresh Layout ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Layout . finish Refresh () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview . smart _ refresh _ layout . setOn Load More Listener Ġ{ Ġrefresh Layout Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Presenter . load More () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Layout . finish Load More () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġjump To The Top () Ġ{ ĊĠĠĠĠĠĠĠ Ġrv _ home _ pager ?. smooth Scroll To Position ( 0 ) ĊĠĠĠ Ġ} Ċ Ċ }