66
77import com .rxjava2 .android .samples .R ;
88
9- import org .reactivestreams .Publisher ;
10-
119import java .util .ArrayList ;
1210import java .util .List ;
1311import java .util .concurrent .TimeUnit ;
1412
1513import androidx .appcompat .app .AppCompatActivity ;
1614import androidx .recyclerview .widget .LinearLayoutManager ;
1715import androidx .recyclerview .widget .RecyclerView ;
18- import io .reactivex .Flowable ;
16+ import io .reactivex .Single ;
1917import io .reactivex .android .schedulers .AndroidSchedulers ;
20- import io .reactivex .annotations .NonNull ;
2118import io .reactivex .disposables .CompositeDisposable ;
2219import io .reactivex .disposables .Disposable ;
23- import io .reactivex .functions .Consumer ;
24- import io .reactivex .functions .Function ;
2520import io .reactivex .processors .PublishProcessor ;
21+ import io .reactivex .schedulers .Schedulers ;
2622
2723/**
2824 * Created by amitshekhar on 15/03/17.
@@ -94,23 +90,21 @@ private void subscribeForData() {
9490
9591 Disposable disposable = paginator
9692 .onBackpressureDrop ()
97- .concatMap (new Function <Integer , Publisher <List <String >>>() {
98- @ Override
99- public Publisher <List <String >> apply (@ NonNull Integer page ) {
100- loading = true ;
101- progressBar .setVisibility (View .VISIBLE );
102- return dataFromNetwork (page );
103- }
93+ .doOnNext (page -> {
94+ loading = true ;
95+ progressBar .setVisibility (View .VISIBLE );
10496 })
97+ .concatMapSingle (page -> dataFromNetwork (page )
98+ .subscribeOn (Schedulers .io ())
99+ .doOnError (throwable -> {
100+ // handle error
101+ }))
105102 .observeOn (AndroidSchedulers .mainThread ())
106- .subscribe (new Consumer <List <String >>() {
107- @ Override
108- public void accept (@ NonNull List <String > items ) {
109- paginationAdapter .addItems (items );
110- paginationAdapter .notifyDataSetChanged ();
111- loading = false ;
112- progressBar .setVisibility (View .INVISIBLE );
113- }
103+ .subscribe (items -> {
104+ paginationAdapter .addItems (items );
105+ paginationAdapter .notifyDataSetChanged ();
106+ loading = false ;
107+ progressBar .setVisibility (View .INVISIBLE );
114108 });
115109
116110 compositeDisposable .add (disposable );
@@ -122,18 +116,15 @@ public void accept(@NonNull List<String> items) {
122116 /**
123117 * Simulation of network data
124118 */
125- private Flowable <List <String >> dataFromNetwork (final int page ) {
126- return Flowable .just (true )
119+ private Single <List <String >> dataFromNetwork (final int page ) {
120+ return Single .just (true )
127121 .delay (2 , TimeUnit .SECONDS )
128- .map (new Function <Boolean , List <String >>() {
129- @ Override
130- public List <String > apply (@ NonNull Boolean value ) {
131- List <String > items = new ArrayList <>();
132- for (int i = 1 ; i <= 10 ; i ++) {
133- items .add ("Item " + (page * 10 + i ));
134- }
135- return items ;
122+ .map (value -> {
123+ List <String > items = new ArrayList <>();
124+ for (int i = 1 ; i <= 10 ; i ++) {
125+ items .add ("Item " + (page * 10 + i ));
136126 }
127+ return items ;
137128 });
138129 }
139130}
0 commit comments