For example you can use Observable.fromCallable to create observable with your data.
public Observable<Data> getData(){
return Observable.fromCallable(() -> {
Data result = null;
//do something, get your Data object
return result;
});
}
then use your data
getData().subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(data -> {
//do something with your data
}, error -> {
//do something on error
});
Used rxjava 1.x and lambda expressions.
edit:
if I understand you well, you wanted to replace that listener, not wrap it into observable. I added other example in reference to your comment. Oh.. also you should use Single if you are expecting only one item.
public Single<Data> getData() {
return Single.create(singleSubscriber -> {
Data result = object.getData();
if(result == null){
singleSubscriber.onError(new Exception("no data"));
} else {
singleSubscriber.onSuccess(result);
}
});
}
getData().subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(data -> {
//do something with your data
}, error -> {
//do something on error
});
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…