package Ġcom . example . refresh kit . demo 2 Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . annotation . Call Super Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . widget . Content Loading ProgressBar Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . adapter . kit . Adapter Kit Ċ import Ġcom . adapter . kit . Data Item Ċ import Ġcom . example . refresh kit . R Ċ import Ġcom . refresh . kit . Magic RecyclerView Ċ Ċ import Ġcom . refresh . kit . core . I Refresh Ċ import Ġcom . refresh . kit . core . Refresh Kit Layout Ċ Ċ import Ġcom . refresh . kit . view . Over View Ċ import Ġcom . refresh . kit . view . Text Over View Ċ import Ġkotlinx . android . synt hetic . main . activity _ i _ as b _ list .* Ċ Ċ /** Ċ Ġ* Ġ éĢļ çĶ¨ åŁº ç±» åĪĹè¡¨ Ċ Ġ*/ Ċ abstract Ġclass ĠAbs List Activity Ġ: ĠAppCompatActivity (), ĠI Refresh . I Refresh Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Refresh Header View : ĠText Over View ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Adapter : ĠAdapter Kit ĊĠĠĠ Ġprotected Ġvar Ġm Refresh Layout : ĠRefresh Kit Layout ? Ġ= Ġnull ĊĠĠĠ Ġprotected Ġvar Ġm RecyclerView : ĠMagic RecyclerView ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm ProgressBar : ĠContent Loading ProgressBar ? Ġ= Ġnull ĊĠĠĠ Ġprotected Ġvar Ġpage Index Ġ= Ġ 1 ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠP REF ETCH _ SIZE Ġ= Ġ 5 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ i _ as b _ list ) ĊĊĠĠĠĠĠĠĠ Ġthis . m Refresh Layout Ġ= Ġrefresh _ layout ĊĠĠĠĠĠĠĠ Ġthis . m RecyclerView Ġ= Ġre cycler _ view ĊĠĠĠĠĠĠĠ Ġthis . m ProgressBar Ġ= Ġprogress _ bar ĊĊĠĠĠĠĠĠĠ Ġ// ä¸ĭ æĭī åĪ·æĸ° è§ĨåĽ¾ , è®¾ç½® ç»Ļ I Refresh Layout ä¸Ĭ ĊĠĠĠĠĠĠĠ Ġm Refresh Header View Ġ= ĠText Over View ( this ) ĊĠĠĠĠĠĠĠ Ġm Refresh Layout ?. set Refresh Over View ( m Refresh Header View ) ĊĠĠĠĠĠĠĠ Ġm Refresh Layout ?. set Refresh Listener ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® recyclerview ĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= Ġcreate LayoutManager () ĊĠĠĠĠĠĠĠ Ġm Adapter Ġ= ĠAdapter Kit ( this ) ĊĠĠĠĠĠĠĠ Ġm RecyclerView ?. layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠ Ġm RecyclerView ?. adapter Ġ= Ġm Adapter ĊĊĠĠĠĠĠĠĠ Ġm ProgressBar ?. visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġpage Index Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġcreate LayoutManager (): ĠRecyclerView . LayoutManager Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLinearLayoutManager ( this , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠ Ġ} Ċ Ċ //////// ///// ä¸ĭ æĭī åĪ· æĸ°çļĦ çĽĳåĲ¬ //////////////////////////////// //////// /// ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¼ĢåĲ¯ ä¸ĭ æĭī åĪ·æĸ° , é»ĺè®¤ æĺ¯ å¼ĢåĲ¯ çļĦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġenable Refresh (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Refresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m RecyclerView ?. isLoading () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æŃ£ å¤Ħ äºİ åĪĨé¡µ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Refresh Layout ?. post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Refresh Layout ?. refresh Finished () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpage Index Ġ= Ġ 1 ĊĠĠĠ Ġ} Ċ Ċ //////// ///// åĬłè½½ æĽ´å¤ļ //////////////////////////////// //////// /// ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¼ĢåĲ¯ åĬłè½½ æĽ´å¤ļ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġenable Load More ( callback : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ä¸ºäºĨ éĺ² æŃ¢ Ġ åĲĮæĹ¶ Ġä¸ĭ æĭī åĪ·æĸ° ĠåĴĮ ä¸Ĭ æĭī åĪĨé¡µ çļĦ è¯·æ±Ĥ ï¼Į è¿ĻéĩĮ å°± éľĢè¦ģ å¤ĦçĲĨ ä¸Ģ æĬĬ ĊĠĠĠĠĠĠĠ Ġm RecyclerView ?. enable Load More ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Refresh Header View . state Ġ== ĠOver View . I Refresh State . STATE _ REFRESH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æŃ£ å¤Ħ äºİ åĪ·æĸ° çĬ¶æĢģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm RecyclerView ?. load Finished ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ enable Load More ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Index ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback () ĊĠĠĠĠĠĠĠ Ġ}, ĠP REF ETCH _ SIZE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç¦ģ çĶ¨ åĬłè½½ æĽ´å¤ļ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġdisable Load More () Ġ{ ĊĠĠĠĠĠĠĠ Ġm RecyclerView ?. disable Load More () ĊĠĠĠ Ġ} Ċ Ċ //////// ///// å®ĮæĪĲ ä¸ĭ æĭī åĪ·æĸ° æĪĸ åĬłè½½ æĽ´å¤ļ //////////////////////////////// //////// /// ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å®ĮæĪĲ ä¸ĭ æĭī åĪ·æĸ° æĪĸ åĬłè½½ æĽ´å¤ļ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġfinish Refresh ( data ItemList : ĠList < Data Item < *, Ġout ĠRecyclerView . ViewHolder >> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsuccess Ġ= Ġdata ItemList Ġ!= Ġnull Ġ&& Ġdata ItemList . isNotEmpty () ĊĠĠĠĠĠĠĠ Ġval Ġrefresh Ġ= Ġpage Index Ġ== Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( refresh ) Ġ{// ä¸ĭ æĭī åĪ·æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ProgressBar ?. visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Refresh Layout ?. refresh Finished () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . clear Items () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . add Items ( data ItemList !! , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// todo Ġ éļĲèĹı ç©º é¡µéĿ¢ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æŃ¤ æĹ¶ å°± éľĢè¦ģ åĪ¤æĸŃ åĪĹè¡¨ ä¸Ĭ æĺ¯åĲ¦ å·²ç»ı æľī æķ°æį® ï¼Į å¦Ĥæŀľ ä¹Ī æľī ï¼Į æĺ¾ç¤º åĩº ç©º é¡µéĿ¢ è½¬ æĢģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Adapter . item Count Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// todo Ġåı¯ä»¥ å±ķç¤º ç©º é¡µéĿ¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{// åĬłè½½ æĽ´å¤ļ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . add Items ( data ItemList !! , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm RecyclerView ?. load Finished ( success ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }