Skip to content

Commit 705bb84

Browse files
Change Flowable to Single in Pagination
1 parent 44924bd commit 705bb84

File tree

2 files changed

+23
-32
lines changed

2 files changed

+23
-32
lines changed

app/src/main/java/com/rxjava2/android/samples/ui/pagination/PaginationActivity.java

Lines changed: 22 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,19 @@
66

77
import com.rxjava2.android.samples.R;
88

9-
import org.reactivestreams.Publisher;
10-
119
import java.util.ArrayList;
1210
import java.util.List;
1311
import java.util.concurrent.TimeUnit;
1412

1513
import androidx.appcompat.app.AppCompatActivity;
1614
import androidx.recyclerview.widget.LinearLayoutManager;
1715
import androidx.recyclerview.widget.RecyclerView;
18-
import io.reactivex.Flowable;
16+
import io.reactivex.Single;
1917
import io.reactivex.android.schedulers.AndroidSchedulers;
20-
import io.reactivex.annotations.NonNull;
2118
import io.reactivex.disposables.CompositeDisposable;
2219
import io.reactivex.disposables.Disposable;
23-
import io.reactivex.functions.Consumer;
24-
import io.reactivex.functions.Function;
2520
import 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
}

app/src/main/res/layout/item_pagination.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
android:layout_width="match_parent"
66
android:layout_height="wrap_content"
77
android:padding="@dimen/activity_horizontal_margin"
8-
android:textSize="20sp" />
8+
android:textSize="32sp" />

0 commit comments

Comments
 (0)