/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 ĠY an ĠZ hen j ie Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . yan zh en j ie . recyclerview . swipe Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . v 7 . widget . Grid LayoutManager Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . support . v 7 . widget . St agger ed Grid LayoutManager Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View Configuration Ċ import Ġandroid . view . ViewGroup Ċ Ċ import Ġcom . yan zh en j ie . recyclerview . swipe . touch . Default Item Touch Helper Ċ import Ġcom . yan zh en j ie . recyclerview . swipe . touch . On Item Move Listener Ċ import Ġcom . yan zh en j ie . recyclerview . swipe . touch . On Item Movement Listener Ċ import Ġcom . yan zh en j ie . recyclerview . swipe . touch . On Item StateChanged Listener Ċ import Ġcom . yan zh en j ie . recyclerview . swipe . widget . Default Load More View Ċ Ċ import Ġjava . util . ArrayList Ċ Ċ /** Ċ Ġ* ĠSw ipe Ġmenu Ġre cycler Ġview . Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠY an ĠZ hen j ie Ġon Ġ 2 0 1 6 / 7 / 2 7 . Ċ Ġ*/ Ċ class ĠSw ipe Menu RecyclerView Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style : ĠInt Ġ= Ġ 0 ) Ġ: ĠRecyclerView ( context , Ġattrs , Ġdef Style ) Ġ{ ĊĊĠ Ġprotected Ġvar Ġm Scale Touch S lop Ġ= ĠView Configuration . get ( getContext ()). scaled Touch S lop ĊĠ Ġprotected Ġvar Ġm Old Sw ip ed Layout : ĠSw ipe Menu Layout ? Ġ= Ġnull ĊĠ Ġprotected Ġvar Ġm Old Tou ched Position Ġ= ĠINVALID _ POSITION ĊĊĠ Ġprivate Ġvar Ġm Down X : ĠInt Ġ= Ġ 0 ĊĠ Ġprivate Ġvar Ġm Down Y : ĠInt Ġ= Ġ 0 ĊĊĠ Ġprivate Ġvar Ġallow Swipe Delete Ġ= Ġfalse ĊĊĠ Ġprivate Ġvar Ġm Default Item Touch Helper : ĠDefault Item Touch Helper ? Ġ= Ġnull ĊĊĠ Ġprivate Ġvar Ġm Swipe Menu Enabled Ġ= Ġtrue ĊĠ Ġprivate Ġvar Ġm Swipe Menu Creator : ĠSw ipe Menu Creator ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġm Swipe MenuItem ClickListener : ĠSw ipe MenuItem ClickListener ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġm Swipe ItemClickListener : ĠSw ipe ItemClickListener ? Ġ= Ġnull ĊĊĠ Ġprivate Ġvar Ġm Adapter Wrapper : ĠSw ipe Adapter Wrapper ? Ġ= Ġnull ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠLong Ġpress Ġdrag Ġenabled Ġstatus . ĊĠĠ Ġ*/ ĊĠ Ġvar Ġis Long Press Drag Enabled : ĠBoolean ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠ Ġinitialize Item Touch Helper () ĊĠĠĠĠĠ Ġreturn Ġthis . m Default Item Touch Helper ?. is Long Press Drag Enabled Ġ?: Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġset ( can Drag ) Ġ{ ĊĠĠĠĠĠ Ġinitialize Item Touch Helper () ĊĠĠĠĠĠ Ġthis . m Default Item Touch Helper ?. is Long Press Drag Enabled Ġ= Ġcan Drag ĊĠĠĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠItem Ġview Ġswipe Ġenabled Ġstatus . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ< p > Note : Ġswipe Ġand Ġmenu Ġconflict .</ p > ĊĠĠ Ġ*/ ĊĠ Ġvar Ġis Item View Swipe Enabled : ĠBoolean ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠ Ġinitialize Item Touch Helper () ĊĠĠĠĠĠ Ġreturn Ġthis . m Default Item Touch Helper ?. is Item View Swipe Enabled Ġ?: Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġset ( can Swipe ) Ġ{ ĊĠĠĠĠĠ Ġinitialize Item Touch Helper () ĊĠĠĠĠĠ Ġallow Swipe Delete Ġ= Ġcan Swipe ĊĠĠĠĠĠ Ġthis . m Default Item Touch Helper ?. is Item View Swipe Enabled Ġ= Ġcan Swipe ĊĠĠĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠOriginal Ġadapter . ĊĠĠ Ġ*/ ĊĠ Ġval Ġorigin Adapter : ĠAdapter < *> ? ĊĠĠĠ Ġget () Ġ= Ġm Adapter Wrapper ?. origin Adapter ĊĊĠ Ġprivate Ġval Ġm Adapter Data Observer Ġ= Ġobject Ġ: ĠAdapter Data Observer () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonChanged () Ġ{ ĊĠĠĠĠĠ Ġm Adapter Wrapper ?. notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Range Changed ( position Start : ĠInt , Ġitem Count : ĠInt ) Ġ{ ĊĠĠĠĠĠ Ġm Adapter Wrapper ?. notify Item Range Changed ( position Start Ġ+ Ġheader ItemCount , Ġitem Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Range Changed ( position Start : ĠInt , Ġitem Count : ĠInt , Ġpayload : ĠAny ?) Ġ{ ĊĠĠĠĠĠ Ġm Adapter Wrapper ?. notify Item Range Changed ( position Start Ġ+ Ġheader ItemCount , Ġitem Count , Ġpayload ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Range Inserted ( position Start : ĠInt , Ġitem Count : ĠInt ) Ġ{ ĊĠĠĠĠĠ Ġm Adapter Wrapper ?. notify Item Range Inserted ( position Start Ġ+ Ġheader ItemCount , Ġitem Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Range Removed ( position Start : ĠInt , Ġitem Count : ĠInt ) Ġ{ ĊĠĠĠĠĠ Ġm Adapter Wrapper ?. notify Item Range Removed ( position Start Ġ+ Ġheader ItemCount , Ġitem Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Range Moved ( from Position : ĠInt , Ġto Position : ĠInt , Ġitem Count : ĠInt ) Ġ{ ĊĠĠĠĠĠ Ġm Adapter Wrapper ?. notify Item Moved ( from Position Ġ+ Ġheader ItemCount , Ġto Position Ġ+ Ġheader ItemCount ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġprivate Ġvar Ġm Data Observer Registered Ġ= Ġfalse ĊĊĠ Ġprivate Ġval Ġm Header View List Ġ= ĠArrayList < View >() ĊĠ Ġprivate Ġval Ġm Footer View List Ġ= ĠArrayList < View >() ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠHeader Ġitem Ġcount . ĊĠĠ Ġ*/ ĊĠ Ġval Ġheader ItemCount : ĠInt ĊĠĠĠ Ġget () Ġ= Ġm Adapter Wrapper ?. header ItemCount Ġ?: Ġ 0 ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠFooter Ġitem Ġcount . ĊĠĠ Ġ*/ ĊĠ Ġval Ġfooter ItemCount : ĠInt ĊĠĠĠ Ġget () Ġ= Ġm Adapter Wrapper ?. footer ItemCount Ġ?: Ġ 0 ĊĊĠ Ġprivate Ġvar Ġm Scroll State Ġ= Ġ- 1 ĊĊĠ Ġprivate Ġvar Ġis Load More Ġ= Ġfalse ĊĠ Ġprivate Ġvar Ġis Auto Load More Ġ= Ġtrue ĊĠ Ġprivate Ġvar Ġis Load Error Ġ= Ġfalse ĊĊĠ Ġprivate Ġvar Ġm Data Empty Ġ= Ġtrue ĊĠ Ġprivate Ġvar Ġm Has More Ġ= Ġfalse ĊĊĠ Ġprivate Ġvar Ġm Load More View : ĠLoad More View ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġm Load More Listener : ĠLoad More Listener ? Ġ= Ġnull ĊĊĠ Ġprivate Ġfun Ġinitialize Item Touch Helper () Ġ{ ĊĠĠĠ Ġval Ġtouch Helper Ġ= Ġm Default Item Touch Helper ĊĊĠĠĠ Ġif Ġ( touch Helper Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġm Default Item Touch Helper Ġ= ĠDefault Item Touch Helper (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġattach To RecyclerView ( this @ Swipe Menu RecyclerView ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSet ĠOn Item Move Listener . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġon Item Move Listener Ġ[ On Item Move Listener ]. ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset On Item Move Listener ( on Item Move Listener : ĠOn Item Move Listener ) Ġ{ ĊĠĠĠ Ġinitialize Item Touch Helper () ĊĠĠĠ Ġthis . m Default Item Touch Helper ?. on Item Move Listener Ġ= Ġon Item Move Listener ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSet ĠOn Item Movement Listener . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġon Item Movement Listener Ġ[ On Item Movement Listener ]. ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset On Item Movement Listener ( on Item Movement Listener : ĠOn Item Movement Listener ) Ġ{ ĊĠĠĠ Ġinitialize Item Touch Helper () ĊĠĠĠ Ġthis . m Default Item Touch Helper ?. on Item Movement Listener Ġ= Ġon Item Movement Listener ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSet ĠOn Item StateChanged Listener . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġon Item StateChanged Listener Ġ[ On Item StateChanged Listener ]. ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset On Item StateChanged Listener ( on Item StateChanged Listener : ĠOn Item StateChanged Listener ) Ġ{ ĊĠĠĠ Ġinitialize Item Touch Helper () ĊĠĠĠ Ġthis . m Default Item Touch Helper ?. on Item StateChanged Listener Ġ= Ġon Item StateChanged Listener ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠStart Ġdrag Ġa Ġitem . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param ĠviewHolder Ġthe ĠViewHolder Ġto Ġstart Ġdragging . ĠIt Ġmust Ġbe Ġa Ġdirect Ġchild Ġof ĠRecyclerView . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġstart Drag ( view Holder : ĠViewHolder ) Ġ{ ĊĠĠĠ Ġinitialize Item Touch Helper () ĊĠĠĠ Ġthis . m Default Item Touch Helper ?. start Drag ( view Holder ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠStar Ġswipe Ġa Ġitem . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param ĠviewHolder Ġthe ĠViewHolder Ġto Ġstart Ġsw ip ing . ĠIt Ġmust Ġbe Ġa Ġdirect Ġchild Ġof ĠRecyclerView . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġstart Swipe ( view Holder : ĠViewHolder ) Ġ{ ĊĠĠĠ Ġinitialize Item Touch Helper () ĊĠĠĠ Ġthis . m Default Item Touch Helper ?. start Swipe ( view Holder ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠCheck Ġthe ĠAdapter Ġand Ġthrow Ġan Ġexception Ġif Ġit Ġalready Ġexists . ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun Ġcheck Adapter Exist ( message : ĠString ) Ġ{ ĊĠĠĠ Ġif Ġ( m Adapter Wrapper Ġ!= Ġnull ) ĊĠĠĠĠĠ Ġthrow ĠIllegalStateException ( message ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSet Ġitem Ġclick Ġlistener . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset Swipe ItemClickListener ( item ClickListener : ĠSw ipe ItemClickListener ?) Ġ{ ĊĠĠĠ Ġitem ClickListener Ġ?: Ġreturn ĊĠĠĠ Ġcheck Adapter Exist (" Cannot Ġset Ġitem Ġclick Ġlistener , Ġset Adapter Ġhas Ġalready Ġbeen Ġcalled .") ĊĠĠĠ Ġthis . m Swipe ItemClickListener Ġ= ĠItem Click ( this , Ġitem ClickListener ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġclass ĠItem Click ( private Ġval Ġm RecyclerView : ĠSw ipe Menu RecyclerView , Ġprivate Ġval Ġm Callback : ĠSw ipe ItemClickListener ) Ġ: ĠSw ipe ItemClickListener Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( item View : ĠView , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠ Ġval Ġitem Position Ġ= Ġposition Ġ- Ġm RecyclerView . header ItemCount ĊĊĠĠĠĠĠ Ġif Ġ( item Position Ġ>= Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġm Callback . on Item Click ( item View , Ġitem Position ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSet Ġto Ġcreate Ġmenu Ġlistener . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset Swipe Menu Creator ( menu Creator : ĠSw ipe Menu Creator ?) Ġ{ ĊĠĠĠ Ġmenu Creator Ġ?: Ġreturn ĊĠĠĠ Ġcheck Adapter Exist (" Cannot Ġset Ġmenu Ġcreator , Ġset Adapter Ġhas Ġalready Ġbeen Ġcalled .") ĊĠĠĠ Ġthis . m Swipe Menu Creator Ġ= Ġmenu Creator ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSet Ġto Ġclick Ġmenu Ġlistener . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset Swipe MenuItem ClickListener ( menuItem ClickListener : ĠSw ipe MenuItem ClickListener ?) Ġ{ ĊĠĠĠ Ġmenu ItemClickListener Ġ?: Ġreturn ĊĠĠĠ Ġcheck Adapter Exist (" Cannot Ġset Ġmenu Ġitem Ġclick Ġlistener , Ġset Adapter Ġhas Ġalready Ġbeen Ġcalled .") ĊĠĠĠ Ġthis . m Swipe MenuItem ClickListener Ġ= ĠMenuItem Click ( this , Ġmenu ItemClickListener ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġclass ĠMenuItem Click ( private Ġval Ġm RecyclerView : ĠSw ipe Menu RecyclerView , Ġprivate Ġval Ġm Callback : ĠSw ipe MenuItem ClickListener ) Ġ: ĠSw ipe MenuItem ClickListener Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( menu Bridge : ĠSw ipe Menu Bridge ) Ġ{ ĊĠĠĠĠĠ Ġval Ġitem Position Ġ= Ġmenu Bridge . adapter Position Ġ- Ġm RecyclerView . header ItemCount ĊĊĠĠĠĠĠ Ġif Ġ( item Position Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Bridge . adapter Position Ġ= Ġitem Position ĊĠĠĠĠĠĠĠ Ġm Callback . on Item Click ( menu Bridge ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSet Ġswipe Ġmenu Ġenabled . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġenabled Ġenabled . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset Swipe Menu Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠ Ġm Swipe Menu Enabled Ġ= Ġenabled ĊĠĠĠ Ġm Adapter Wrapper ?. set Swipe Menu Enabled ( enabled ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġset LayoutManager ( layout Manager : ĠLayout Manager ) Ġ{ ĊĠĠĠ Ġif Ġ( layout Manager Ġis ĠGrid LayoutManager ) Ġ{ ĊĠĠĠĠĠ Ġval Ġspan Size Lookup Holder Ġ= Ġlayout Manager . span Size Lookup ĊĊĠĠĠĠĠ Ġlayout Manager . span Size Lookup Ġ= Ġobject Ġ: ĠGrid LayoutManager . Span Size Lookup () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Span Size ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Wrapper Ġ= Ġm Adapter Wrapper ĊĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( adapter Wrapper Ġ!= Ġnull Ġ&& Ġ( adapter Wrapper . is Header View ( position ) Ġ|| Ġadapter Wrapper . is Footer View ( position ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager . span Count ĊĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Lookup Holder ?. get Span Size ( position Ġ- Ġheader ItemCount ) Ġ?: Ġ 1 ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġsuper . setLayout Manager ( layout Manager ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġset Adapter ( adapter : ĠAdapter < ViewHolder > ?) Ġ{ ĊĠĠĠ Ġif Ġ( m Data Observer Registered ) Ġ{ ĊĠĠĠĠĠ Ġm Data Observer Registered Ġ= Ġfalse ĊĠĠĠĠĠ Ġm Adapter Wrapper ?. origin Adapter ?. unregister Adapter Data Observer ( m Adapter Data Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( adapter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġm Adapter Wrapper Ġ= Ġnull ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġadapter . register Adapter Data Observer ( m Adapter Data Observer ) ĊĊĠĠĠĠĠ Ġval Ġadapter Wrapper Ġ= ĠSw ipe Adapter Wrapper ( context , Ġadapter ) ĊĊĠĠĠĠĠ Ġadapter Wrapper . set Swipe ItemClickListener ( m Swipe ItemClickListener ) ĊĠĠĠĠĠ Ġadapter Wrapper . set Swipe Menu Creator ( m Swipe Menu Creator ) ĊĠĠĠĠĠ Ġadapter Wrapper . set Swipe Menu Enabled ( m Swipe Menu Enabled ) ĊĠĠĠĠĠ Ġadapter Wrapper . set Swipe MenuItem ClickListener ( m Swipe MenuItem ClickListener ) ĊĊĠĠĠĠĠ Ġif Ġ( m Header View List . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( view Ġin Ġm Header View List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġadapter Wrapper . add Header View ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( m Footer View List . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( view Ġin Ġm Footer View List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġadapter Wrapper . add Footer View ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġm Adapter Wrapper Ġ= Ġadapter Wrapper ĊĠĠĠĠĠ Ġm Data Observer Registered Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġsuper . setAdapter ( m Adapter Wrapper ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠAdd Ġview Ġat Ġthe Ġheaders . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġadd Header View ( view : ĠView ) Ġ{ ĊĠĠĠ Ġm Header View List . add ( view ) ĊĠĠĠ Ġm Adapter Wrapper ?. add Header View And Notify ( view ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRemove Ġview Ġfrom Ġheader . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġremove Header View ( view : ĠView ) Ġ{ ĊĠĠĠ Ġm Header View List . remove ( view ) ĊĠĠĠ Ġm Adapter Wrapper ?. remove Header View And Notify ( view ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġheader Ġview Ġholder Ġstatus . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġholder Ġview Ġholder . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġis Header ViewHolder ( holder : ĠViewHolder ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġadapter Wrapper Ġ= Ġthis . m Adapter Wrapper Ġ?: Ġreturn Ġfalse ĊĠĠĠ Ġval Ġheader Count Ġ= Ġadapter Wrapper . header ItemCount ĊĠĠĠ Ġval Ġposition Ġ= Ġholder . adapter Position ĊĊĠĠĠ Ġreturn Ġheader Count Ġ> Ġ 0 Ġ&& Ġposition Ġ< Ġheader Count ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġfooter Ġview Ġholder Ġstatus . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġholder Ġview Ġholder . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġis Footer ViewHolder ( holder : ĠViewHolder ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġadapter Wrapper Ġ= Ġthis . m Adapter Wrapper Ġ?: Ġreturn Ġfalse ĊĠĠĠ Ġval Ġitem Count Ġ= Ġadapter Wrapper . item Count ĊĠĠĠ Ġval Ġfooter Count Ġ= Ġadapter Wrapper . footer ItemCount ĊĠĠĠ Ġval Ġposition Ġ= Ġholder . adapter Position ĊĊĠĠĠ Ġreturn Ġfooter Count Ġ> Ġ 0 Ġ&& Ġposition Ġ< Ġitem Count ĊĠĠĠĠĠĠĠ Ġ&& Ġposition Ġ>= Ġ( item Count Ġ- Ġfooter Count ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠAdd Ġview Ġat Ġthe Ġfooter . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġadd Footer View ( view : ĠView ) Ġ{ ĊĠĠĠ Ġm Footer View List . add ( view ) ĊĠĠĠ Ġm Adapter Wrapper ?. add Footer View And Notify ( view ) ĊĠ Ġ} ĊĊĠ Ġfun Ġremove Footer View ( view : ĠView ) Ġ{ ĊĠĠĠ Ġm Footer View List . remove ( view ) ĊĠĠĠ Ġm Adapter Wrapper ?. remove Footer View And Notify ( view ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠGet ĠView Type Ġof Ġitem . ĊĠĠ Ġ*/ ĊĠ Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġm Adapter Wrapper ?. getItem ViewType ( position ) Ġ?: Ġ 0 ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġopen Ġmenu Ġon Ġleft . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġposition Ġposition . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġsmooth Open Left Menu ( position : ĠInt ) Ġ{ ĊĠĠĠ Ġsmooth Open Menu ( position , ĠLEFT _ DIRECTION , ĠSw ipe Menu Layout . DEFAULT _ SCROLL ER _ DURATION ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġopen Ġmenu Ġon Ġleft . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġposition Ġposition . ĊĠĠ Ġ* Ġ@ param Ġduration Ġtime Ġmillis . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġsmooth Open Left Menu ( position : ĠInt , Ġduration : ĠInt ) Ġ{ ĊĠĠĠ Ġsmooth Open Menu ( position , ĠLEFT _ DIRECTION , Ġduration ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġopen Ġmenu Ġon Ġright . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġposition Ġposition . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġsmooth Open Right Menu ( position : ĠInt ) Ġ{ ĊĠĠĠ Ġsmooth Open Menu ( position , ĠRIGHT _ DIRECTION , ĠSw ipe Menu Layout . DEFAULT _ SCROLL ER _ DURATION ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġopen Ġmenu Ġon Ġright . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġposition Ġposition . ĊĠĠ Ġ* Ġ@ param Ġduration Ġtime Ġmillis . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġsmooth Open Right Menu ( position : ĠInt , Ġduration : ĠInt ) Ġ{ ĊĠĠĠ Ġsmooth Open Menu ( position , ĠRIGHT _ DIRECTION , Ġduration ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġopen Ġmenu . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġposition Ġ Ġposition . ĊĠĠ Ġ* Ġ@ param Ġduration Ġ Ġtime Ġmillis . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ see ĠLEFT _ DIRECTION ĊĠĠ Ġ* Ġ@ see ĠRIGHT _ DIRECTION ĊĠĠ Ġ*/ ĊĠ Ġfun Ġsmooth Open Menu ( position : ĠInt , Ġdirection : ĠInt , Ġduration : ĠInt ) Ġ{ ĊĠĠĠ Ġm Old Sw ip ed Layout ?. apply Ġ{ ĊĠĠĠĠĠ Ġif Ġ( is Menu Open ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsmooth Close Menu () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġitem Position Ġ= Ġposition Ġ+ Ġheader ItemCount ĊĠĠĠ Ġval Ġholder Ġ= Ġfind ViewHolder For Adapter Position ( position ) ĊĊĠĠĠ Ġif Ġ( holder Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġval ĠitemView Ġ= Ġget Swipe Menu View ( holder . item View ) ĊĊĠĠĠĠĠ Ġif Ġ( item View Ġis ĠSw ipe Menu Layout ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Old Sw ip ed Layout Ġ= ĠitemView ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( direction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠRIGHT _ DIRECTION Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Old Tou ched Position Ġ= Ġitem Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Old Sw ip ed Layout ?. smooth Open Right Menu ( duration ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ ĠLEFT _ DIRECTION Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Old Tou ched Position Ġ= Ġitem Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Old Sw ip ed Layout ?. smooth Open Left Menu ( duration ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠClose Ġmenu . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġsmooth Close Menu () Ġ{ ĊĠĠĠ Ġval Ġold Swipe Ġ= Ġm Old Sw ip ed Layout ĊĊĠĠĠ Ġif Ġ( old Swipe Ġ!= Ġnull Ġ&& Ġold Swipe . is Menu Open ) Ġ{ ĊĠĠĠĠĠ Ġold Swipe . smooth Close Menu () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Intercept Touch Event ( e : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠ Ġvar Ġis Intercept ed Ġ= Ġsuper . on Intercept Touch Event ( e ) ĊĊĠĠĠ Ġif Ġ( allow Swipe Delete ) Ġ{ ĊĠĠĠĠĠ Ġ// Ġswipe Ġand Ġmenu Ġconflict . ĊĠĠĠĠĠ Ġreturn Ġis Intercept ed ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( e . pointer Count Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġaction Ġ= Ġe . action ĊĠĠĠ Ġval Ġx Ġ= Ġe . x . toInt () ĊĠĠĠ Ġval Ġy Ġ= Ġe . y . toInt () ĊĊĠĠĠ Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġm Down X Ġ= Ġx ĊĠĠĠĠĠĠĠ Ġm Down Y Ġ= Ġy ĊĠĠĠĠĠĠĠ Ġis Intercept ed Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġtouch ing Position Ġ= Ġget Child Adapter Position ( find Child View Under ( x . toFloat (), Ġy . toFloat ())) ĊĠĠĠĠĠĠĠ Ġval Ġold Swipe Ġ= Ġm Old Sw ip ed Layout ĊĊĠĠĠĠĠĠĠ Ġif Ġ( touch ing Position Ġ!= Ġm Old Tou ched Position Ġ&& Ġold Swipe Ġ!= Ġnull Ġ&& Ġold Swipe . is Menu Open ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġold Swipe . smooth Close Menu () ĊĠĠĠĠĠĠĠĠĠ Ġis Intercept ed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Intercept ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġm Old Sw ip ed Layout Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠ Ġm Old Tou ched Position Ġ= ĠINVALID _ POSITION ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġholder Ġ= Ġfind ViewHolder For Adapter Position ( touch ing Position ) ĊĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( holder Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= Ġget Swipe Menu View ( holder . item View ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item View Ġis ĠSw ipe Menu Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Old Sw ip ed Layout Ġ= ĠitemView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Old Tou ched Position Ġ= Ġtouch ing Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ// ĠThey Ġare Ġsensitive Ġto Ġretain Ġsl iding Ġand Ġin ertia . ĊĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġis Intercept ed Ġ= Ġhandle Un Down ( x , Ġy , Ġis Intercept ed ) ĊĠĠĠĠĠĠĠ Ġval Ġold Swipe Ġ= Ġm Old Sw ip ed Layout ĊĠĠĠĠĠĠĠ Ġval Ġview Parent Ġ= Ġparent ĊĊĠĠĠĠĠĠĠ Ġif Ġ( old Swipe Ġ!= Ġnull Ġ&& Ġview Parent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġdis X Ġ= Ġm Down X Ġ- Ġx ĊĊĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĲĳ å·¦ æ»ĳ ï¼Į æĺ¾ç¤º åı³ ä¾§ èıľåįķ ï¼Į æĪĸèĢħ åħ³éĹŃ å·¦ ä¾§ èıľåįķ ãĢĤ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġshow Right Close Left Ġ= Ġdis X Ġ> Ġ 0 Ġ&& Ġ( old Swipe . has Right Menu () Ġ|| Ġold Swipe . is Left Complete Open ) ĊĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĲĳ åı³ æ»ĳ ï¼Į æĺ¾ç¤º å·¦ ä¾§ èıľåįķ ï¼Į æĪĸèĢħ åħ³éĹŃ åı³ ä¾§ èıľåįķ ãĢĤ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġshow Left Close Right Ġ= Ġdis X Ġ< Ġ 0 Ġ&& Ġ( old Swipe . has Left Menu () Ġ|| Ġold Swipe . is Right Complete Open ) ĊĊĠĠĠĠĠĠĠĠĠ Ġview Parent . request Dis allow Intercept Touch Event ( show Right Close Left Ġ|| Ġshow Left Close Right ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis Intercept ed Ġ= Ġhandle Un Down ( x , Ġy , Ġis Intercept ed ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠMotion Event . ACTION _ UP , ĊĠĠĠĠĠ ĠMotion Event . ACTION _ CANCEL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġis Intercept ed Ġ= Ġhandle Un Down ( x , Ġy , Ġis Intercept ed ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġis Intercept ed ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġhandle Un Down ( x : ĠInt , Ġy : ĠInt , ĠdefaultValue : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġdis X Ġ= Ġm Down X Ġ- Ġx ĊĠĠĠ Ġval Ġdis Y Ġ= Ġm Down Y Ġ- Ġy ĊĊĠĠĠ Ġ// Ġswipe ĊĠĠĠ Ġif Ġ( Math . abs ( dis X ) Ġ> Ġm Scale Touch S lop Ġ&& ĠMath . abs ( dis X ) Ġ> ĠMath . abs ( dis Y )) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġclick ĊĠĠĠ Ġreturn Ġif Ġ( Math . abs ( dis Y ) Ġ< Ġm Scale Touch S lop Ġ&& ĠMath . abs ( dis X ) Ġ< Ġm Scale Touch S lop ) Ġfalse Ġelse ĠdefaultValue ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Touch Event ( e : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġaction Ġ= Ġe . action ĊĠĠĠ Ġval Ġold Swipe Ġ= Ġm Old Sw ip ed Layout ĊĊĠĠĠ Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġif Ġ( old Swipe Ġ!= Ġnull Ġ&& Ġold Swipe . is Menu Open ) Ġ{ ĊĠĠĠĠĠĠĠ Ġold Swipe . smooth Close Menu () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsuper . on Touch Event ( e ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Swipe Menu View ( item View : ĠView ): ĠView Ġ{ ĊĠĠĠ Ġif Ġ( item View Ġis ĠSw ipe Menu Layout ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĠitemView ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġun visited Ġ= ĠArrayList < View >() ĊĠĠĠ Ġun visited . add ( item View ) ĊĊĠĠĠ Ġwhile Ġ(! un visited . isEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġchild Ġ= Ġun visited . remove At ( 0 ) Ġas ? ĠViewGroup Ġ?: Ġcontinue ĊĊĠĠĠĠĠ Ġif Ġ( child Ġis ĠSw ipe Menu Layout ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġchild ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġval Ġchild Count Ġ= Ġchild . child Count ĊĠĠĠĠĠ Ġ( 0 Ġuntil Ġchild Count ). map To ( un visited ) Ġ{ Ġchild . getChild At ( it ) Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠitemView ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Scroll StateChanged ( state : ĠInt ) Ġ{ ĊĠĠĠ Ġthis . m Scroll State Ġ= Ġstate ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Sc rolled ( dx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġlayout Manager Ġ= Ġlayout Manager ĊĊĠĠĠ Ġif Ġ( layout Manager Ġ!= Ġnull Ġ&& Ġlayout Manager Ġis ĠLinearLayoutManager ) Ġ{ ĊĠĠĠĠĠ Ġval Ġitem Count Ġ= Ġlayout Manager . item Count ĊĊĠĠĠĠĠ Ġif Ġ( item Count Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġval Ġlast Visible Position Ġ= Ġlayout Manager . find Last Visible Item Position () ĊĊĠĠĠĠĠ Ġif Ġ( item Count Ġ== Ġlast Visible Position Ġ+ Ġ 1 Ġ&& Ġ( m Scroll State Ġ== ĠSC ROLL _ STATE _ DR AG GING Ġ|| Ġm Scroll State Ġ== ĠSC ROLL _ STATE _ SET TL ING )) Ġ{ ĊĠĠĠĠĠĠĠ Ġdispatch Load More () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ġelse Ġif Ġ( layout Manager Ġ!= Ġnull Ġ&& Ġlayout Manager Ġis ĠSt agger ed Grid LayoutManager ) Ġ{ ĊĠĠĠĠĠ Ġval Ġitem Count Ġ= Ġlayout Manager . item Count ĊĊĠĠĠĠĠ Ġif Ġ( item Count Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġval Ġlast Visible Position Array Ġ= Ġlayout Manager . find Last Comp let ely Visible Item Positions ( null ) ĊĠĠĠĠĠ Ġval Ġlast Visible Position Ġ= Ġlast Visible Position Array [ last Visible Position Array . size Ġ- Ġ 1 ] ĊĊĠĠĠĠĠ Ġif Ġ( item Count Ġ== Ġlast Visible Position Ġ+ Ġ 1 Ġ&& Ġ( m Scroll State Ġ== ĠSC ROLL _ STATE _ DR AG GING Ġ|| Ġm Scroll State Ġ== ĠSC ROLL _ STATE _ SET TL ING )) Ġ{ ĊĠĠĠĠĠĠĠ Ġdispatch Load More () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġdispatch Load More () Ġ{ ĊĠĠĠ Ġif Ġ( is Load Error ) Ġreturn ĊĊĠĠĠ Ġif Ġ(! is Auto Load More ) Ġ{ ĊĠĠĠĠĠ Ġm Load More View ?. on Wait To Load More ( m Load More Listener ) ĊĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġif Ġ( is Load More Ġ|| Ġm Data Empty Ġ|| Ġ! m Has More ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis Load More Ġ= Ġtrue ĊĠĠĠĠĠ Ġm Load More View ?. on Loading () ĊĠĠĠĠĠ Ġm Load More Listener ?. on Load More () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠUse Ġthe Ġdefault Ġto Ġload Ġmore ĠView . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġuse Default Load More () Ġ{ ĊĠĠĠ Ġval Ġdefault Load More View Ġ= ĠDefault Load More View ( context ) ĊĠĠĠ Ġadd Footer View ( default Load More View ) ĊĠĠĠ Ġset Load More View ( default Load More View ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠLoad Ġmore Ġview . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset Load More View ( load More View : ĠLoad More View ) Ġ{ ĊĠĠĠ Ġm Load More View Ġ= Ġload More View ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠLoad Ġmore Ġlistener . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset Load More Listener ( load More Listener : ĠLoad More Listener ) Ġ{ ĊĠĠĠ Ġm Load More Listener Ġ= Ġload More Listener ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠAutomatically Ġload Ġmore Ġautomatically . ĊĠĠ Ġ* ĊĠĠ Ġ* ĊĠĠ Ġ* ĠNon - auto - loading Ġmode , Ġyou Ġcan Ġto Ġclick Ġon Ġthe Ġitem Ġto Ġload . ĊĠĠ Ġ* ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġauto Load More Ġyou Ġcan Ġuse Ġfalse . ĊĠĠ Ġ* Ġ@ see ĠLoad More View . on Wait To Load More ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset Auto Load More ( auto Load More : ĠBoolean ) Ġ{ ĊĠĠĠ Ġis Auto Load More Ġ= Ġauto Load More ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠLoad Ġmore Ġdone . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġdata Empty Ġdata Ġis Ġempty Ġ? ĊĠĠ Ġ* Ġ@ param Ġhas More ĠĠ Ġhas Ġmore Ġdata Ġ? ĊĠĠ Ġ*/ ĊĠ Ġfun Ġload More Finish ( data Empty : ĠBoolean , Ġhas More : ĠBoolean ) Ġ{ ĊĠĠĠ Ġis Load More Ġ= Ġfalse ĊĠĠĠ Ġis Load Error Ġ= Ġfalse ĊĊĠĠĠ Ġm Data Empty Ġ= Ġdata Empty ĊĠĠĠ Ġm Has More Ġ= Ġhas More ĊĊĠĠĠ Ġm Load More View ?. on Load Finish ( data Empty , Ġhas More ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠCalled Ġwhen Ġdata Ġis Ġloaded Ġincorrectly . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param ĠerrorCode ĠĠĠ ĠError Ġcode , Ġwill Ġbe Ġpassed Ġto Ġthe ĠLoad View , Ġyou Ġcan Ġaccording Ġto Ġit Ġto Ġcustomize Ġthe Ġprompt Ġinformation . ĊĠĠ Ġ* Ġ@ param ĠerrorMessage ĠError Ġmessage . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġload More Error ( errorCode : ĠInt , ĠerrorMessage : ĠString ) Ġ{ ĊĠĠĠ Ġis Load More Ġ= Ġfalse ĊĠĠĠ Ġis Load Error Ġ= Ġtrue ĊĊĠĠĠ Ġm Load More View ?. on Load Error ( errorCode , ĠerrorMessage ) ĊĠ Ġ} ĊĊĠ Ġinterface ĠLoad More View Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShow Ġprogress . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Loading () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoad Ġfinish , Ġhandle Ġresult . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠonLoad Finish ( data Empty : ĠBoolean , Ġhas More : ĠBoolean ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNon - auto - loading Ġmode , Ġyou Ġcan Ġto Ġclick Ġon Ġthe Ġitem Ġto Ġload . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Wait To Load More ( load More Listener : ĠLoad More Listener ?) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoad Ġerror . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠonLoad Error ( errorCode : ĠInt , ĠerrorMessage : ĠString ) ĊĠ Ġ} ĊĊĠ Ġinterface ĠLoad More Listener Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMore Ġdata Ġshould Ġbe Ġrequested . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠonLoad More () ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLeft Ġmenu . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconst Ġval ĠLEFT _ DIRECTION Ġ= Ġ 1 ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRight Ġmenu . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconst Ġval ĠRIGHT _ DIRECTION Ġ= Ġ- 1 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInvalid Ġposition . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġconst Ġval ĠINVALID _ POSITION Ġ= Ġ- 1 ĊĠ Ġ} Ċ Ċ } Ċ