package Ġcom . ash ish . movie guide . ui . base . recyclerview Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . annotation . Drawable Res Ċ import Ġandroid . support . annotation . String Res Ċ import Ġandroid . support . v 4 . widget . Swipe Refresh Layout Ċ import Ġandroid . support . v 7 . widget . St agger ed Grid LayoutManager Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . ProgressBar Ċ import Ġcom . ash ish . movie guide . R Ċ import Ġcom . ash ish . movie guide . ui . animation . Slide In Up Animator Ċ import Ġcom . ash ish . movie guide . ui . base . mvp . M vp Fragment Ċ import Ġcom . ash ish . movie guide . ui . common . adapter . Infinite Scroll Listener Ċ import Ġcom . ash ish . movie guide . ui . common . adapter . On ItemClickListener Ċ import Ġcom . ash ish . movie guide . ui . common . adapter . RecyclerView Adapter Ċ import Ġcom . ash ish . movie guide . ui . common . adapter . ViewType Ċ import Ġcom . ash ish . movie guide . ui . widget . Font TextView Ċ import Ġcom . ash ish . movie guide . ui . widget . Item Offset Decoration Ċ import Ġcom . ash ish . movie guide . ui . widget . Multi Swipe Refresh Layout Ċ import Ġcom . ash ish . movie guide . ui . widget . St agger ed Grid RecyclerView Ċ import Ġcom . ash ish . movie guide . utils . Utils Ċ import Ġcom . ash ish . movie guide . utils . extensions . bind View Ċ import Ġcom . ash ish . movie guide . utils . extensions . getPost er Image Pair Ċ import Ġcom . ash ish . movie guide . utils . extensions . hide Ċ import Ġcom . ash ish . movie guide . utils . extensions . setVisibility Ċ import Ġcom . ash ish . movie guide . utils . extensions . show Ċ import Ġcom . ash ish . movie guide . utils . extensions . startActivity With Transition Ċ import Ġice pick . State Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠA sh ish Ġon ĠDec Ġ 3 0 . Ċ Ġ*/ Ċ abstract Ġclass ĠBase RecyclerView Fragment < I Ġ: ĠView Type , ĠV Ġ: ĠBase RecyclerView M vp View < I >, ĊĠĠĠĠĠĠĠ ĠP Ġ: ĠBase RecyclerView Presenter < I , ĠV >> Ġ: ĠM vp Fragment < V , ĠP >(), ĠBase RecyclerView M vp View < I >, ĊĠĠĠĠĠĠĠ ĠSw ipe Refresh Layout . On Refresh Listener , ĠOn ItemClickListener Ġ{ ĊĊĠĠĠ Ġ@ Jvm Field Ġ@ State Ġvar Ġtype : ĠInt ? Ġ= Ġnull ĊĊĠĠĠ Ġprotected Ġval Ġempty ContentView : ĠView Ġby Ġbind View ( R . id . empty _ view ) ĊĠĠĠ Ġprotected Ġval ĠprogressBar : ĠProgress Bar Ġby Ġbind View ( R . id . progress _ bar ) ĊĠĠĠ Ġprotected Ġval Ġempty TextView : ĠFont TextView Ġby Ġbind View ( R . id . empty _ text ) ĊĠĠĠ Ġprotected Ġval Ġempty ImageView : ĠImageView Ġby Ġbind View ( R . id . empty _ image _ view ) ĊĠĠĠ Ġprotected Ġval Ġre cyclerView : ĠSt agger ed Grid RecyclerView Ġby Ġbind View ( R . id . recycler _ view ) ĊĠĠĠ Ġprotected Ġval Ġswipe Refresh Layout : ĠMulti Swipe Refresh Layout Ġby Ġbind View ( R . id . swipe _ refresh ) ĊĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġre cyclerView Adapter : ĠRecyclerView Adapter < I > ĊĊĠĠĠ Ġprivate Ġval Ġscroll Listener : ĠIn finite Scroll Listener Ġ= ĠIn finite Scroll Listener Ġ{ ĠcurrentPage Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( currentPage Ġ> Ġ 1 ) Ġre cyclerView . post Ġ{ Ġpresenter ?. load More Data ( type , ĠcurrentPage ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Id () Ġ= ĠR . layout . fragment _ recycler _ view ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView ?, ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit Views () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġempty TextView . setText ( get Empty Text Id ()) ĊĠĠĠĠĠĠĠ Ġempty ImageView . setImage Resource ( get Empty Image Id ()) ĊĊĠĠĠĠĠĠĠ Ġre cyclerView Adapter Ġ= ĠRecyclerView Adapter ( R . layout . list _ item _ content , Ġget Adapter Type (), Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġre cyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty View Ġ= Ġempty ContentView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Animator Ġ= ĠSlide In Up Animator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( Item Offset Decoration ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn Count Ġ= Ġresources . getInteger ( R . integer . content _ column _ count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠSt agger ed Grid LayoutManager ( column Count , ĠSt agger ed Grid LayoutManager . VERTICAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd On Scroll Listener ( scroll Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġre cyclerView Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Color Scheme Resources ( R . color . color Accent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Swipe able Views ( empty ContentView , Ġre cyclerView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Refresh Listener ( this @ Base RecyclerView Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġload Data () Ġ= Ġpresenter ?. load Data ( type ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġtype Ġof Ġadapter Ġto Ġrepresent Ġtype Ġof Ġdata Ġbeing Ġshown Ġin Ġthis Ġlist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġget Adapter Type (): ĠInt ĊĊĠĠĠ Ġ@ String Res ĊĠĠĠ Ġabstract Ġfun Ġget Empty Text Id (): ĠInt ĊĊĠĠĠ Ġ@ Drawable Res ĊĠĠĠ Ġabstract Ġfun Ġget Empty Image Id (): ĠInt ĊĊĠĠĠ Ġoverride Ġfun Ġon Refresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġscroll Listener . reset Page Count () ĊĠĠĠĠĠĠĠ Ġpresenter ?. load Fresh Data ( type , Ġre cyclerView Adapter . item Count Ġ== Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġempty ContentView . hide () ĊĠĠĠĠĠĠĠ ĠprogressBar . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhide Progress () Ġ{ ĊĠĠĠĠĠĠĠ ĠprogressBar . hide () ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġempty ContentView . setVisibility ( re cyclerView Adapter . item Count Ġ== Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetCurrent Page ( currentPage : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġscroll Listener . setCurrent Page ( currentPage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow ItemList ( item List : ĠList < I > ?) Ġ= Ġre cyclerView Adapter . show ItemList ( item List ) ĊĊĠĠĠ Ġoverride Ġfun Ġshow Loading Item () Ġ= Ġre cyclerView Adapter . add Loading Item () ĊĊĠĠĠ Ġoverride Ġfun Ġadd New ItemList ( item List : ĠList < I > ?) Ġ= Ġre cyclerView Adapter . add New ItemList ( item List ) ĊĊĠĠĠ Ġoverride Ġfun Ġremove Loading Item () Ġ{ ĊĠĠĠĠĠĠĠ Ġre cyclerView Adapter . remove Loading Item () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreset Loading () Ġ= Ġscroll Listener . reset Loading () ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( position : ĠInt , Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Utils . is Online ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġget Detail Intent ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( intent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposter Image Pair Ġ= Ġview . getPost er Image Pair ( get Transition Name Id ( position )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. startActivity With Transition ( poster Image Pair , Ġintent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Message ( R . string . error _ no _ internet ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġtransition Ġname Ġfor Ġshared Ġelement Ġtransition ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġget Transition Name Id ( position : ĠInt ): ĠInt ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġintent Ġto Ġstart Ġdetail Ġactivity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġget Detail Intent ( position : ĠInt ): ĠIntent ? ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġre cyclerView Adapter . remove Listener () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} Ċ }