Rxjava 2.0
Observable.fromIterable(list)
.subscribeOn(Schedulers.io())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
markerOptionsList.clear();
}
})
.flatMap(new Function<MaintenanceMap, ObservableSource<MarkerOptions>>() {
@Override
public ObservableSource<MarkerOptions> apply(MaintenanceMap entity) throws Exception {
LatLng llB = new LatLng(Double.parseDouble(entity.getY()), Double.parseDouble(entity.getX()));
return Observable.just(createMarkers(llB, entity, Overlay_Index));
}
})
.filter(new Predicate<MarkerOptions>() {
@Override
public boolean test(MarkerOptions markerOptions) throws Exception {
return markerOptions != null;
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<MarkerOptions>() {
@Override
public void accept(MarkerOptions markerOptions) throws Exception {
markerOptionsList.add(markerOptions);
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
}
}, new Action() {
@Override
public void run() throws Exception {
// 设置地图中心点
maintenanceMap.setCenter(markerOptionsList.get(0));
// // 设置其他地图点
maintenanceMap.updateMap(markerOptionsList);
maintenanceList.updateList(maintenanceMapList);
}
});
Rxjava 1.0
Observable.from(list)
.subscribeOn(Schedulers.io())
.doOnSubscribe(new Action0() {
@Override
public void call() {
markerOptionsList.clear();
}
})
.flatMap(new Func1<MaintenanceMap, Observable<MarkerOptions>>() {
@Override
public Observable<MarkerOptions> call(MaintenanceMap entity) {
LatLng llB = new LatLng(Double.parseDouble(entity.getY()), Double.parseDouble(entity.getX()));
return Observable.just(createMarkers(llB, entity, Overlay_Index));
}
})
.filter(new Func1<MarkerOptions, Boolean>() {
@Override
public Boolean call(MarkerOptions markerOptions) {
return markerOptions != null;
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<MarkerOptions>() {
@Override
public void onCompleted() {
// 设置地图中心点
maintenanceMap.setCenter(markerOptionsList.get(0));
// // 设置其他地图点
maintenanceMap.updateMap(markerOptionsList);
maintenanceList.updateList(maintenanceMapList);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(MarkerOptions markers) {
markerOptionsList.add(markers);
}
});
以前的写法:
markerOptionsList.clear();
for (int i = 0; i < list.size(); i++) {
MaintenanceMap entity = list.get(i);
LatLng llB = new LatLng(Double.parseDouble(entity.getY()), Double.parseDouble(entity.getX()));
MarkerOptions markerOptions = createMarkers(llB, entity, Overlay_Index);
if (markerOptions != null){
markerOptionsList.add(markerOptions);
}
}
// 设置地图中心点
maintenanceMap.setCenter(markerOptionsList.get(0));
// // 设置其他地图点
maintenanceMap.updateMap(markerOptionsList);
maintenanceList.updateList(maintenanceMapList);