In my Android client I receive this JSON data from a backend:
[
[
1427378400000,
553
],
[
1427382000000,
553
]
]
If you change readProductLevels
to emit each list item one at a time, you can
then react to them one at a time:
In mProductService:
private Observable> readProductLevels() {
return Observable.create(
new Observable.OnSubscribe>() {
@Override
public void call(Subscriber super List> subscriber) {
List> items = new ArrayList>();
List list1 = new ArrayList() {{
add(1D);
add(2D);
}};
items.add(list1);
List list2 = new ArrayList() {{
add(10D);
add(12D);
}};
items.add(list2);
List list3 = new ArrayList() {{
add(21D);
add(22D);
}};
items.add(list3);
// Imagine the list creation above is your Json parsing
for (List list : items) {
subscriber.onNext(list);
}
subscriber.onCompleted();
}
});
}
Allows you to subscribe to each item in your super list:
private void getProductLevels() {
Observable> responseObservable = readProductLevels();
AppObservable.bindFragment(this, responseObservable)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
// TODO: Transform List> into List
.subscribe(
new Subscriber>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(List response) {
new ProductLevel(response.get(0), response.get(1));
}
});
}