package Ġcom . lu uu . se ven . module . update Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . core . view . update Padding Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . observe Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . lu uu . se ven . R Ċ import Ġcom . lu uu . se ven . adapter . Com ic Update Adapter Ċ import Ġcom . lu uu . se ven . adapter . Diff Update Callback Ċ import Ġcom . lu uu . se ven . base . Base Fragment Ċ import Ġcom . lu uu . se ven . bean . Com ic Update Bean Ċ import Ġcom . lu uu . se ven . util . dp 2 px Ċ import Ġcom . lu uu . se ven . util . nav Ċ import Ġcom . lu uu . se ven . util . observe Event Ċ import Ġcom . lu uu . se ven . util . padding Top Ċ import Ġcom . lu uu . se ven . widgets . Space Item Decoration Ċ import Ġkotlinx . android . synt hetic . main . f ra _ tab _ layout .* ĊĊ Ċ /** Ċ Ġ* ĠĠĠĠ Ġauthor Ġ: Ġdell Ċ Ġ* ĠĠĠĠ Ġe - mail Ġ: Ċ Ġ* ĠĠĠĠ Ġtime ĠĠ Ġ: Ġ 2 0 1 7 / 0 8 / 0 3 Ċ Ġ* ĠĠĠĠ Ġdesc ĠĠ Ġ: Ċ Ġ* ĠĠĠĠ Ġversion : Ċ Ġ*/ Ċ class ĠCom ic Update Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm ViewModel : ĠUpdate ViewModel Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġvar Ġm Update Bean List : ĠArrayList < Com ic Update Bean > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġvar Ġm Adapter : ĠCom ic Update Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġm LayoutManager Ġby Ġlazy Ġ{ ĠGrid LayoutManager ( mContext , Ġ 3 ) Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠCom ic Update Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCom ic Update Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ContentView Layout ID (): ĠInt Ġ= ĠR . layout . f ra _ tab _ layout ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġm ViewModel . get Com ic Update () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Views () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġre cycler . update Padding ( left Ġ= Ġdp 2 px ( 1 5 ), Ġtop Ġ= Ġpadding Top ( require Context ()), Ġright Ġ= Ġdp 2 px ( 1 5 )) ĊĊĠĠĠĠĠĠĠ Ġm ViewModel . update List . observe ( view Lifecycle Owner ) Ġ{ Ġdata Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Update Bean List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Update Bean List . addAll ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter ?. set New Diff Data ( Diff Update Callback ( data )) Ġ?: Ġinit Adapter () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm ViewModel . load More . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Update Bean List . addAll ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter ?. let Ġ{ Ġadapter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . load More Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . set New Diff Data ( Diff Update Callback ( m Update Bean List )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm ViewModel . swipe Refresh ing . observe Event ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( refresh . is Refresh ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh . is Refresh ing Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm ViewModel . load More End . observe Event ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter ?. load More End () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġre cycler . 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 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh . isEnabled Ġ= Ġm LayoutManager . findFirst Comp let ely Visible Item Position () Ġ== Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġrefresh . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . update Refresh () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Adapter Ġ= ĠCom ic Update Adapter ( R . layout . item _ com ic _ layout , Ġm Update Bean List ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Enable Load More ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnLoad More Listener ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . update Load Next Page () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġre cycler ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On ItemClickListener Ġ{ Ġ_, Ġ_, Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Bundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Bundle . put Int (" com ic Id ", Ġm Update Bean List [ position ]. id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav (). navigate ( R . id . action _ home _ fragment _ to _ intro _ fragment , Ġm Bundle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cycler . layout Manager Ġ= Ġm LayoutManager ĊĠĠĠĠĠĠĠ Ġre cycler . adapter Ġ= Ġm Adapter ĊĠĠĠĠĠĠĠ Ġre cycler . addItem Decoration ( Space Item Decoration ( mContext !! ). set Space ( 1 0 )) ĊĠĠĠ Ġ} Ċ Ċ }