package Ġcom . sample . j ub ako Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Message Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . just eat . j ub ako . J ub ako Ċ import Ġcom . just eat . j ub ako . extensions . add Description Ċ import Ġcom . just eat . j ub ako . extensions . load Ċ import Ġcom . just eat . j ub ako . recycler views . J ub ako ViewHolder Ċ import Ġcom . just eat . j ub ako . recycler views . adapters . J ub ako Adapter Ċ import Ġcom . just eat . j ub ako . recycler views . view Holder Factory Ċ import Ġcom . just eat . j ub ako . recycler views . with J ub ako Ċ import Ġkotlinx . android . synt hetic . main . activity _ j ub ako _ recycler . re cyclerView Ċ Ċ class ĠRow Updates Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġupdater : ĠRow Updater Handler ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ j ub ako _ recycler ) ĊĊĠĠĠĠĠĠĠ ĠJ ub ako . logger . enabled Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġre cyclerView . with J ub ako ( this ). load Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠRO WS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġhello Ġ= Ġ" Hello ĠJ ub ako ! Ġ$ i Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Description ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠHEL LO _ ID Ġ+ Ġi , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġobject Ġ: ĠLive Data < String >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Active () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Value ( hello ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Reload Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhello Ġ= Ġhello . plus ( hello . first ()). drop ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Spec Ġ= ĠviewHolder Factory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠJ ub ako ViewHolder < String >( textView ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbind ( data : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( item View Ġas ĠTextView ). text Ġ= Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdater Ġ= ĠRow Updater Handler ( re cyclerView ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Updates () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠRow Updater Handler ( private Ġval Ġre cycler : ĠRecyclerView ) Ġ: ĠHandler () Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġrunning : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Row Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġfun Ġpost Updates () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrunning Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsendMessage Delayed ( Message . obtain (). apply Ġ{ Ġwhat Ġ= ĠUPDATE Ġ}, Ġ 2 4 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrunning Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Messages ( UPDATE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Message ( msg : ĠMessage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( running ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( msg . what Ġ== ĠUPDATE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( recycler . adapter Ġas ? ĠJ ub ako Adapter )?. reload ( HEL LO _ ID Ġ+ Ġcurrent Row ++) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Row Ġ== ĠRO WS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Row Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Updates () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠtextView ( text : ĠString Ġ= Ġ"") : ĠTextView Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTextView ( this ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Text ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Text Size ( Typed Value . COMPLEX _ UNIT _ DIP , Ġ 4 8 f ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġupdater . stop () ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġconst Ġval ĠHEL LO _ ID Ġ= Ġ" hello " Ċ private Ġconst Ġval ĠUPDATE Ġ= Ġ 1 Ċ private Ġconst Ġval ĠRO WS Ġ= Ġ 2 0 Ċ