package Ġio . x apk . apk installer . ui . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġe zy . ui . layout . Loading Layout Ċ import Ġio . x apk . apk installer . R Ċ import Ġio . x apk . apk installer . misc . Load Image Default Scroll Listener Ċ import Ġio . x apk . apk installer . model . bean . ApiException Ċ import Ġio . x apk . apk installer . utils . bean . apk . App Info Ċ import Ġio . x apk . apk installer . model . event . App Installed Status Event Ċ import Ġio . x apk . apk installer . ui . base . Base Fragment Ċ import Ġio . x apk . apk installer . ui . fragment . adapter . App Installed Adapter Ċ import Ġio . x apk . apk installer . ui . fragment . contract . App Installed Frag Contract Ċ import Ġio . x apk . apk installer . ui . fragment . presenter . App Installed Frag Presenter Ċ import Ġio . x apk . apk installer . ui . widget . Color Swipe Refresh Layout Ċ Ċ class ĠApp Installed Fragment Ġ: ĠBase Fragment (), ĠApp Installed Frag Contract . Step View Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġloading Layout : ĠLoading Layout ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġswipe Refresh Layout : ĠColor Swipe Refresh Layout ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġinstalled RecyclerView : ĠRecyclerView ĊĠĠĠ Ġprivate Ġval Ġapp Installed Frag Presenter Ġby Ġlazy Ġ{ ĠApp Installed Frag Presenter () Ġ} ĊĠĠĠ Ġprivate Ġval Ġapp Installed Adapter Ġby Ġlazy Ġ{ ĠApp Installed Adapter ( m Activity , Ġarray ListOf ()) Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠApp Installed Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠApp Installed Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . fragment _ installed _ app ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit View ( root View : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init View ( root View ) ĊĠĠĠĠĠĠĠ Ġloading Layout Ġ= Ġroot View . findViewById ( R . id . loading _ layout ) ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout Ġ= Ġroot View . findViewById ( R . id . swipe _ refresh _ layout ) ĊĠĠĠĠĠĠĠ Ġinstalled RecyclerView Ġ= Ġroot View . findViewById ( R . id . installed _ recycler _ view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Lazy Load () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Lazy Load () ĊĠĠĠĠĠĠĠ Ġapp Installed Frag Presenter . attach View ( this ) ĊĠĠĠĠĠĠĠ Ġinstalled RecyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . adapter Ġ= Ġapp Installed Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . layout Manager Ġ= ĠLinearLayoutManager ( mContext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . add On Scroll Listener ( Load Image Default Scroll Listener ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġloading Layout . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . set Empty Text ( mContext . getString ( R . string . empty _ applications )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . set Retry Listener Ġ{ Ġget Load Installed Apps () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Load Installed Apps () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget Load Installed Apps () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Load Installed Apps () Ġ= Ġapp Installed Frag Presenter . get Load Installed Apps ( mContext ) ĊĊĠĠĠ Ġoverride Ġfun Ġload Data On Subscribe () Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġloading Layout . show Content () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Data On Success ( app InfoList : ĠList < App Info >) Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( app InfoList . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Layout . show Empty () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Installed Adapter . set New Data ( app InfoList ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Data OnError ( api Exception : ĠApiException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( app Installed Adapter . data . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! api Exception . display Message . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Layout . setError Text ( api Exception . display Message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Layout . show Error () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġscroll To Beginning () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . scrollTo Beginning () ĊĠĠĠĠĠĠĠ Ġinstalled RecyclerView . scrollTo Position ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonChange Installed Callback ( app Installed Status Event : ĠApp Installed Status Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onChange Installed Callback ( app Installed Status Event ) ĊĠĠĠĠĠĠĠ Ġval Ġapp Info Ġ= Ġapp Installed Status Event . app Info ĊĠĠĠĠĠĠĠ Ġif Ġ( app Installed Status Event . status Ġ== ĠApp Installed Status Event . Status . INSTALL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Installed Adapter . addData ( 0 , Ġapp Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstalled RecyclerView . scrollTo Position ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( app Installed Status Event . status Ġ== ĠApp Installed Status Event . Status . REMOVE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġapp Info Index Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= Ġapp Installed Status Event . app Info . packageName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġapp Installed Adapter . data . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( app Installed Adapter . data [ item ]. packageName Ġ== ĠpackageName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Info Index Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( app Info Index Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Installed Adapter . remove ( app Info Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( app Installed Adapter . data . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Layout . show Empty () ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Layout . show Content () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġapp Installed Frag Presenter . detach View () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} Ċ }