package Ġcom . r ong i . github . kotlin . rx ui . reactive . app . main Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġcom . bus yg lide . shared . Article Ċ import Ġcom . bus yg lide . shared . Article ListAdapter Ċ import Ġcom . bus yg lide . shared . Articles Service Ċ import Ġcom . bus yg lide . shared . support . toast Ċ import Ġcom . bus yg lide . shared . support . visible Ċ import Ġcom . r ong i . github . kotlin . rx ui . reactive . R Ċ import Ġcom . r ong i . github . kotlin . rx ui . reactive . app . App Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠMainActivity Ġ: ĠActivity () Ġ{ ĊĊĠ Ġ@ Inject ĊĠ Ġlateinit Ġvar Ġarticles Service : ĠArticles Service ĊĊĠ Ġprivate Ġval Ġlist Ġby Ġlazy Ġ{ ĊĠĠĠ ĠfindViewById ( R . id . list ) Ġas ĠRecyclerView ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġupdate Button Ġby Ġlazy Ġ{ ĊĠĠĠ ĠfindViewById ( R . id . update _ button ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġprogress Ġby Ġlazy Ġ{ ĊĠĠĠ ĠfindViewById ( R . id . progress ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġempty View Ġby Ġlazy Ġ{ ĊĠĠĠ ĠfindViewById ( R . id . empty _ view ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġarticles Counter Ġby Ġlazy Ġ{ ĊĠĠĠ ĠfindViewById ( R . id . articles _ counter ) Ġas ĠTextView ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġlist Item Click s Ġ= ĠPublish Subject . create < Int >() ĊĊĠ Ġprivate Ġval Ġarticle ListAdapter : ĠArticle ListAdapter Ġby Ġlazy Ġ{ ĊĠĠĠ ĠArticle ListAdapter (). apply Ġ{ ĊĠĠĠĠĠ Ġon ItemClickListener Ġ= Ġ{ Ġlist Item Click s . onNext ( it ) Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ ĠsetContentView ( R . layout . main _ activity ) ĊĠĠĠ ĠApp . roots . inject ( this ) ĊĊĠĠĠ Ġlist . apply Ġ{ ĊĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( this @ MainActivity ) ĊĠĠĠĠĠ Ġadapter Ġ= Ġarticle ListAdapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġmodels Ġ= Ġpresent ( ĊĠĠĠĠĠ Ġarticles Service Ġ= Ġarticles Service , ĊĠĠĠĠĠ Ġupdate Button Click s Ġ= Ġupdate Button . click s (), ĊĠĠĠĠĠ Ġclicked Article Position Ġ= Ġlist Item Click s ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġwith ( models ) Ġ{ ĊĠĠĠĠĠ Ġarticles . subscribe Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Articles ( it ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġempty View Visibility . subscribe Ġ{ Ġshow : ĠBoolean Ġ-> ĊĠĠĠĠĠĠĠ Ġempty View . visible Ġ= Ġshow ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġshow Toast Signal . subscribe Ġ{ Ġ" CLICK : Ġ\"$ it \"" . show Toast () Ġ} ĊĊĠĠĠĠĠ Ġrender ( articles Counter , Ġarticle Counter Models ) ĊĠĠĠ Ġ} ĊĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġshow Articles ( articles : ĠList < Article >) Ġ{ ĊĠĠĠ Ġarticle ListAdapter . articles Ġ= Ġarticles ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠString . show Toast () Ġ{ ĊĠĠĠ Ġthis . toast ( this @ MainActivity ) ĊĠ Ġ} Ċ Ċ } Ċ Ċ fun ĠView . click s (): ĠObservable < Unit > Ġ{ ĊĠ Ġval Ġupdate Button Click s Ġ= ĠPublish Subject . create < Unit >() ĊĠ Ġthis . setOnClickListener Ġ{ Ġupdate Button Click s . onNext ( Unit ) Ġ} ĊĠ Ġreturn Ġupdate Button Click s Ċ } ĊĊ