package Ġcom . y dn . file view Ċ Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . arch . paging . Paged List Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . AsyncTask Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . util . Attribute Set Ċ import Ġjava . util . concurrent . Executor Ċ import Ġjava . util . concurrent . Executors ĊĊ Ċ class ĠFile View Ġ: ĠRecyclerView Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġm Filename : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Initial Pos Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm PageSize Ġ= Ġ 1 0 ĊĠĠĠ Ġprivate Ġvar Ġm Progress Dialog : ĠProgress Dialog ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġm Adapter Ġ= ĠItem Adapter () ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) Ġ{} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style ) Ġ{} ĊĊĠĠĠ Ġfun Ġset Filename ( filename : ĠString ): ĠFile View Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m Filename Ġ= Ġfilename ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Filename (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Filename ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Position ( pos : ĠInt ): ĠFile View Ġ{ ĊĠĠĠĠĠĠĠ Ġm Initial Pos Ġ= Ġpos ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Layout Res ( layout Res : ĠInt ): ĠFile View Ġ{ ĊĠĠĠĠĠĠĠ Ġm Adapter . setLayout Res ( layout Res ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Progress Dialog Res ( progress Dialog Res : ĠInt ): ĠFile View Ġ{ ĊĠĠĠĠĠĠĠ Ġm Adapter . set Progress Dlg Res ( progress Dialog Res ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset PageSize ( pageSize : ĠInt ): ĠFile View Ġ{ ĊĠĠĠĠĠĠĠ Ġm PageSize Ġ= ĠpageSize ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget PageSize (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm PageSize ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit ( scroll Bottom : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclear () ĊĠĠĠĠĠĠĠ Ġitem Animator Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġload Data Ġ= ĠLoad Data ( context , Ġget Filename () !! , Ġscroll Bottom ) ĊĠĠĠĠĠĠĠ Ġm Progress Dialog Ġ= ĠProgress Dialog ( context ) ĊĠĠĠĠĠĠĠ Ġload Data . execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġscroll Bottom () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġscroll Top () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Position ( 0 ) ĊĠĠĠĠĠĠĠ Ġinit ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġre cyc led View Pool . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĊĠĠĠĠĠĠĠ Ġm Progress Dialog ?. dismiss () ĊĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠLoad Data Ġinternal Ġconstructor ( internal Ġvar Ġcontext : ĠContext ?, Ġinternal Ġvar Ġfilename : ĠString , Ġinternal Ġvar Ġscroll Bottom : ĠBoolean ) Ġ: ĠAsync Task < Void , ĠVoid , ĠVoid ?> () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġconfig : ĠP aged List . Config ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġpage d List : ĠP aged List < Item >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġfile Storage : ĠFile Storage ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar ĠdataSource : ĠFile DataSource ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġposition Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Pre Execute () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Storage Ġ= ĠFile Storage ( filename ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource Ġ= ĠFile DataSource ( file Storage !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Ġ= ĠP aged List . Config . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Enable Place holders ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set PageSize ( m PageSize ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Progress Dialog ?. setMessage (" Please Ġwait ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Progress Dialog ?. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Pre Execute () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġvoid s : ĠVoid ): ĠVoid ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( scroll Bottom ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġfile Storage !!. numberOf Lines Ġ- Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġif Ġ( count Ġ< Ġ 0 ) Ġ 0 Ġelse Ġcount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource ?. initial Pos Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage d List Ġ= ĠP aged List . Builder ( dataSource !! , Ġconfig !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Notify Executor ( MainThread Executor ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Fetch Executor ( Executors . new Single Thread Executor ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Boundary Callback ( object Ġ: ĠP aged List . Boundary Callback < Item >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item At End Loaded ( item At End : ĠItem ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Item At End Loaded ( item At End ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( a Void : ĠVoid ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Post Execute ( a Void ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . submit List ( page d List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . dataSource Ġ= ĠdataSource !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġm Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠCustom Linear LayoutManager ( context !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Progress Dialog ?. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠMain Thread Executor Ġ: ĠExecutor Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm Handler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexecute ( command : ĠRunnable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . post ( command ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠCustom Linear LayoutManager Ġ: ĠLinearLayoutManager Ġ{ ĊĠĠĠĠĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġconstructor ( context : ĠContext , Ġorientation : ĠInt , Ġreverse Layout : ĠBoolean ) Ġ: Ġsuper ( context , Ġorientation , Ġreverse Layout ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style Attr : ĠInt , Ġdef Style Res : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr , Ġdef Style Res ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsupports Predict ive Item Animations (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ