package Ġcom . d hi wise . pagination . binding helper Ċ Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . d hi wise . pagination . Pagination View Ċ import Ġcom . paginate . Pag inate Ċ import Ġcom . paginate . recycler . Loading ListItem Span Lookup Ċ Ċ /** Ċ Ġ* ĠThe Ġclass Ġwhich Ġbind s Ġthe Ġpagination Ġview Ġwith Ġpagination Ġcallback Ċ Ġ* Ċ Ġ* Ġ## ĠNOTE : Ġdon 't Ġuse Ġconstructor Ġobject , Ġinstead Ġof Ġit Ġuse Ġbuild Ġmethod Ġ[ Pagination Binder . build With ] Ċ Ġ*/ Ċ class ĠPagination Binder () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpage Binding Callback : ĠPage Binding Callback ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpagination Callback Ġ: ĠSimple Pag inate Callback ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġprivate Ġconstructor ĊĠĠĠĠ Ġ* Ġ@ param Ġpage Element Count Ġis Ġtotal Ġelements Ġin ĠOne ĠPage ĊĠĠĠĠ Ġ* Ġ@ param Ġpage Binding Callback Ġis Ġcallback Ġwhich Ġhandles Ġfrom Ġfragment Ġor Ġactivity . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġconstructor ( page Element Count : ĠInt , page Binding Callback : ĠPage Binding Callback ): this (){ ĊĠĠĠĠĠĠĠ Ġthis . page Binding Callback Ġ= Ġpage Binding Callback ĊĠĠĠĠĠĠĠ Ġpagination Callback Ġ Ġ= ĠSimple Pag inate Callback ( page Element Count , Ġpage Binding Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġpag inate : ĠPag inate ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠisEmpty View Enable Ġ= Ġtrue ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġmethod Ġis Ġused Ġto Ġget Ġcurrent Ġloaded Ġpage , ĊĠĠĠĠ Ġ* Ġ@ return Ġint Ġvalue Ġof Ġcurrent Ġpage . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetCurrent Page (): ĠInt Ġ= Ġpagination Callback . page ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġused Ġto Ġcreate Ġbuilder Ġoption Ġbefore Ġbinding Ġ[ Pagination View ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġpage Element Count Ġis Ġtotal Ġelements Ġin ĠOne ĠPage ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param ĠonLoad Next Page Ġis Ġthe Ġinstance Ġof Ġ[ Page Binding Callback ] Ġuse Ġto Ġhandle Ġcallbacks Ġif Ġneeded ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Pagination Option ] Ġwhich Ġcontains Ġdifferent Ġoptions ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġbuild With ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Element Count : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonLoad Next Page : ĠPage Binding Callback , ĊĠĠĠĠĠĠĠ Ġ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPagination Option ( page Element Count , ĠonLoad Next Page ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġmethod Ġis Ġuse Ġto Ġenable Ġor Ġdisable Ġload Ġmore Ġfunctionality . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġenable ( bool : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpagination Callback . is Enable Ġ= Ġbool ĊĠĠĠĠĠĠĠ Ġval Ġlast Ġ= Ġ( page Binding Callback . get Pagination View (). adapter ?. item Count Ġ?: Ġ 0 ) Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ>= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Binding Callback . get Pagination View (). adapter ?. notify Item Changed ( last ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġmethod Ġis Ġneeds Ġto Ġbe Ġcall Ġafter Ġnew Ġdata Ġnotified Ġin Ġadapter . ĊĠĠĠĠ Ġ* Ġ@ param Ġtotal Items Ġis Ġthe Ġtotal Ġitems Ġcount Ġafter Ġlist Ġdata Ġchange , ĊĠĠĠĠ Ġ* Ġonce Ġtotal Items Ġand Ġold Ġitem Ġcount Ġare Ġequals Ġmeans Ġall Ġdata Ġare Ġloaded Ġand Ġit Ġdisable Ġload Ġmore Ġfunctionality Ġand Ġalso Ġcall Ġ[ Page Binding Callback . on All Item Loaded ]. ĊĠĠĠĠ Ġ* Ġalso Ġif Ġtotal Items Ġis Ġzero Ġthen Ġit Ġshows Ġno Data Layout Ġand Ġalso Ġcall Ġ[ Page Binding Callback . on No Data Found ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠonLoad Finish ( total Items : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpagination Callback . loading Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġpage Binding Callback . get Pagination View (). set Refresh ing ( false ) ĊĠĠĠĠĠĠĠ Ġif Ġ( total Items Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpagination Callback . is Enable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Binding Callback . on No Data Found () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isEmpty View Enable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Binding Callback . get Pagination View (). is Nothing To Load ( true ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isEmpty View Enable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Binding Callback . get Pagination View (). is Nothing To Load ( false ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( total Items Ġ== Ġpagination Callback . total Loaded Items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Binding Callback . on All Item Loaded () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpagination Callback . page ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpagination Callback . total Loaded Items Ġ= Ġtotal Items ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġmethod Ġis Ġused Ġto Ġreset Ġthe Ġpage Ġelement Ġcount Ġand Ġit Ġstarts Ġthe Ġpages Ġfrom Ġinitial Ġvalue ĊĠĠĠĠ Ġ* Ġ@ param Ġpage Element Count Ġis Ġthe Ġnew Ġpage Ġelement Ġcount Ġvalue Ġin ĠOne ĠPage . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreset ( ĊĠĠĠĠĠĠĠ Ġpage Element Count : ĠInt , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpagination Callback . page Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġpagination Callback . total Loaded Items Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġpagination Callback . loading Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġpagination Callback . page Element Count Ġ= Ġpage Element Count ĊĠĠĠĠĠĠĠ Ġpag inate ?. set Has More DataTo Load ( true ) ĊĠĠĠĠĠĠĠ Ġpagination Callback . is Enable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġpage Binding Callback . get Pagination View (). is Nothing To Load ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġthe Ġinterface Ġis Ġuse Ġto Ġhandle Ġpagination Ġcallbacks Ġevents Ġand Ġprovides Ġdata Ġto Ġbinder ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠPage Binding Callback Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġmethod Ġis Ġcalled Ġwhen Ġwe Ġreached Ġat Ġ[ Pagination Option . threshold ] Ġvalue Ġfor Ġloading Ġnext Ġpage Ġdata , ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġnew Page To Load Ġis Ġnext Ġpage Ġcount Ġvalue ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcurrent Loaded Item Cnt Ġis Ġthe Ġtotal Ġloaded Ġitems Ġcount ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġpage Element Count Ġis Ġthe Ġnumber Ġof Ġitems Ġneeds Ġto Ġbe Ġload ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠonLoad Next ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Page To Load : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Loaded Item Cnt : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Element Count : ĠInt ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġmethod Ġis Ġcalled Ġwhen Ġever Ġthere Ġis Ġno Ġdata Ġfound Ġin Ġlist Ġitem Ġcount ĊĠĠĠĠĠĠĠĠ Ġ* Ġonce Ġ[ Pagination Binder . on Load Finish ] Ġcalled Ġand Ġthe Ġcount Ġvalue Ġis Ġzero Ġat Ġthat Ġtime Ġthis Ġmethod Ġis Ġcalled ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġon No Data Found () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġmethod Ġis Ġcalled Ġwhen Ġafter Ġloading Ġnext Ġpage , total Ġlist Ġitem Ġcount Ġis Ġequals Ġto Ġold Ġlist Ġitem Ġcount ĊĠĠĠĠĠĠĠĠ Ġ* Ġonce Ġ[ Pagination Binder . on Load Finish ] Ġcalled Ġand Ġthe Ġcount Ġvalue Ġis Ġsame Ġas Ġold Ġlist Ġitem Ġcount Ġat Ġthat Ġtime Ġthis Ġmethod Ġis Ġcalled ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġon All Item Loaded () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġmethod Ġis Ġused Ġto Ġget Ġ[ Pagination View ] Ġobject Ġwhen Ġneeded Ġin ĠPagination Binder , ĊĠĠĠĠĠĠĠĠ Ġ* Ġwe Ġdon 't Ġwant Ġto Ġhold Ġany Ġview Ġobject Ġso Ġthe Ġcallback Ġmethod Ġis Ġbest Ġway Ġto Ġhandle Ġthat . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget Pagination View (): ĠPagination View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġclass Ġis Ġused Ġto Ġapply Ġdifferent Ġoptions Ġbefore Ġbind Ġwith Ġ[ Pagination View ], ĊĠĠĠĠ Ġ* Ġonce Ġall Ġoption Ġare Ġset Ġat Ġthat Ġtime Ġmust Ġcall Ġ[ build ] Ġmethod , Ġto Ġbind Ġthe Ġ[ Pagination View ] Ġwith Ġ[ Page Binding Callback ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠPagination Option ( ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġpage Element Count : ĠInt , ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġpage Binding Callback : ĠPage Binding Callback , ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġthreshold : ĠInt Ġ= Ġ 1 ĊĠĠĠ Ġ) Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġon Refresh Callback : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcustom Loading Item Helper : ĠCustom Loading Item Helper ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġon Loading Span Lookup : ĠLoading ListItem Span Lookup ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠisLoading View Enabled : ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠisEmpty View Enable : ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis Refresh Layout Enable : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġres No Data View : ĠInt Ġ= ĠPagination View . DEFAULT _ NO _ DATA _ LAYOUT ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġstr No Data Message : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġstr No Data Title : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġsize No Data Title : ĠFloat ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġsize No Data Message : ĠFloat ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcolor No Data Title : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcolor No Data Message : ĠInt ? Ġ= Ġnull ĊĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġres No Data Message : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġres No Data Title : ĠInt ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġdrawable Img No Data : ĠDrawable ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġres Img No Data : ĠInt ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġurl Img No Data : ĠString ? Ġ= Ġnull ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġset Ġone Ġpage Ġelement Ġcount Ġto Ġload ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcount Ġ- Ġint Ġvalue ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Page Element Count ( count : ĠInt ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . page Element Count Ġ= Ġcount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġadd Ġthreshold Ġvalue Ġto Ġload Ġnext Ġpage ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġ- Ġint Ġvalue ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Threshold ( value : ĠInt ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . threshold Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġrefresh Ġlayout Ġenable Ġor Ġdisable ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġbool Ġ- Ġtrue / false Ġvalue ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠsetIs Refresh Layout Enable ( bool : ĠBoolean ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Refresh Layout Enable Ġ= Ġbool ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġempty Ġview Ġlayout Ġenable Ġor Ġdisable ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġbool Ġ- Ġtrue / false Ġvalue ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠsetIs Empty View Enable ( bool : ĠBoolean ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisEmpty View Enable Ġ= Ġbool ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġlist Ġloading Ġview Ġenable Ġor Ġdisable ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġbool Ġ- Ġtrue / false Ġvalue ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠsetIs Loading View Enable ( bool : ĠBoolean ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading View Enabled Ġ= Ġbool ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġrefresh Ġcallback ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcallback Ġ- Ġfunction Ġparameter Ġto Ġhandle Ġrefresh Ġevent . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset On Refresh ( callback : Ġ() Ġ-> ĠUnit ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Refresh Callback Ġ= Ġcallback ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġcustom Ġloading Ġview Ġlayout ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġloading Item Ġ- ĠCustom Loading Item Helper Ġobject ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Custom Loading Item Helper ( loading Item : ĠCustom Loading Item Helper ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Loading Item Helper Ġ= Ġloading Item ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġloading Ġview Ġspan Ġcount Ġcallback ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġloading Item Span Count Callback Ġ- Ġwhich Ġreturn ĠInt Ġas Ġspan Ġcount Ġwhen Ġlist Ġis Ġtype Ġof Ġgrid Ġor Ġst agger ed Ġis Ġused . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset On Loading Item Span Count Callback ( loading Item Span Count Callback : Ġ() Ġ-> ĠInt ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Loading Span Lookup Ġ= ĠLoading ListItem Span Lookup Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Item Span Count Callback () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġtitle Ġof Ġno Ġdata Ġfound Ġlayout ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġint Ġ- Ġstring Ġresource Ġid ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset No Data Title (@ String Res Ġint : ĠInt ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres No Data Title Ġ= Ġint ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġmessage Ġof Ġno Ġdata Ġfound Ġlayout ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġint Ġ- Ġstring Ġresource Ġid ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset No Data Message (@ String Res Ġint : ĠInt ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres No Data Message Ġ= Ġint ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġmessage Ġtext Ġsize Ġof Ġno Ġdata Ġfound Ġlayout ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfloat Ġ- Ġtext Ġsize Ġas Ġfloat ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset No Data Message Size ( float : ĠFloat ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize No Data Message Ġ= Ġfloat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġmessage Ġtext Ġcolor Ġof Ġno Ġdata Ġfound Ġlayout ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcolor Ġ- Ġcolor Ġvalue Ġint ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset No Data Message Color (@ Color Int Ġcolor : ĠInt ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor No Data Message Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġtitle Ġtext Ġsize Ġof Ġno Ġdata Ġfound Ġlayout ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfloat Ġ- Ġtext Ġsize Ġas Ġfloat ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset No Data Title Size ( float : ĠFloat ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize No Data Title Ġ= Ġfloat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġtitle Ġtext Ġcolor Ġof Ġno Ġdata Ġfound Ġlayout ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcolor Ġ- Ġcolor Ġvalue Ġint ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset No Data Title Color (@ Color Int Ġcolor : ĠInt ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor No Data Title Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġmessage Ġof Ġno Ġdata Ġfound Ġlayout ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġstring Ġ- Ġstring Ġvalue Ġfor Ġmessage ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset No Data Message ( string : ĠString ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr No Data Message Ġ= Ġstring ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġtitle Ġof Ġno Ġdata Ġfound Ġlayout ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġstring Ġ- Ġstring Ġvalue Ġfor Ġtitle ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset No Data Title ( string : ĠString ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr No Data Title Ġ= Ġstring ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġfile Ġpath Ġor Ġnetwork Ġurl Ġfor Ġno Ġdata Ġlayout Ġimage ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġstring Ġ- Ġstring Ġvalue Ġfor Ġurl Ġor Ġfile Ġpath ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset No Data Image ( string : ĠString ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Img No Data Ġ= Ġstring ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġdrawable Ġfor Ġno Ġdata Ġlayout Ġimage ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdrawable Ġis Ġdrawable Ġobject Ġto Ġload ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset No Data Image ( drawable : ĠDrawable ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable Img No Data Ġ= Ġdrawable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġdrawable Ġfrom Ġresource Ġid Ġfor Ġno Ġdata Ġlayout Ġimage ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġres Ġis Ġdrawable Ġresource Ġid ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset No Data Image (@ Drawable Res Ġres : ĠInt ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres Img No Data Ġ= Ġres ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġset Ġno Ġdata Ġlayout Ġcustom Ġview ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġres Ġis Ġlayout Ġid ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPagination Option ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset No Data Layout Res (@ Layout Res Ġres : ĠInt ): ĠPagination Option Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres No Data View Ġ= Ġres ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġmethod Ġis Ġused Ġto Ġbind Ġ[ Pagination View ] Ġwith Ġ[ Page Binding Callback ] ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Pagination Binder ] Ġwhich Ġhandles Ġthe Ġcallbacks ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġbuild (): ĠPagination Binder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpagination View Ġ= Ġpage Binding Callback . get Pagination View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpagination View . set Refresh Layout Enable ( is Refresh Layout Enable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpagination View . setOn Refresh ( on Refresh Callback ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isEmpty View Enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpagination View . set No Data Layout Res ( res No Data View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpagination View . set No Data Title ( str No Data Title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpagination View . set No Data Message ( str No Data Message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres No Data Message ?. let Ġ{ Ġpagination View . set No Data Message ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres No Data Title ?. let Ġ{ Ġpagination View . set No Data Title ( it ) Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres Img No Data ?. let Ġ{ Ġpagination View . set No Data Image ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable Img No Data ?. let Ġ{ Ġpagination View . set No Data Image ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Img No Data ?. let Ġ{ Ġpagination View . set No Data Image ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize No Data Title ?. let Ġ{ Ġpagination View . set No Data Title Text Size ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize No Data Message ?. let Ġ{ Ġpagination View . set No Data Message Text Size ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor No Data Title ?. let Ġ{ Ġpagination View . set No Data Title TextColor ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor No Data Message ?. let Ġ{ Ġpagination View . set No Data Message TextColor ( it ) Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpagination Binder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPagination Binder ( page Element Count , Ġpage Binding Callback ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pagination View . get RecyclerView (). layout Manager Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Add Ġdefault Ġlinear Ġlayout Ġmanager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpagination View . get RecyclerView (). layout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( pagination View . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Binding Callback . get Pagination View (). is Nothing To Load ( false ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpagination Binder . isEmpty View Enable Ġ= ĠisEmpty View Enable ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpagination View . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpag inate Ġ= Ġget Pag inate ( pagination View , Ġpagination Binder . pagination Callback ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpagination Binder . paginate Ġ= Ġpag inate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpagination Binder ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġmethod Ġwhich Ġreturns Ġpag inate Ġobject Ġfor Ġbinding Ġlist Ġview ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Pag inate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpagination View : ĠPagination View , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks : ĠPag inate . Callbacks ĊĠĠĠĠĠĠĠ Ġ): ĠPag inate ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPag inate . with ( pagination View . get RecyclerView (), Ġcallbacks ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Loading Item Helper ?. let Ġ{ Ġset Loading ListItem Creator ( it . list Item Creator ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Loading Span Lookup ?. let Ġ{ Ġset Loading ListItem Span Size Lookup ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Loading ListItem ( isLoading View Enabled ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Loading Trigger Threshold ( threshold ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }