I have an arrayList. And I need to return true if at least one item from my array isNumber. Here is my code:
private boolean hasNumber(ArrayList<Item> items) {
return Observable.fromIterable(items)
.filter(Item::isNumber)
.toList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.map(items-> items.size() > 0)
.subscribe(result -> "");
}
But I can't return true/false from this method. I don't understand how to return value with rxJava. Please help me.
Try blockingFirst
private boolean hasNumber(ArrayList<Item> items) {
return Observable.fromIterable(items)
.filter(Item::isNumber)
.toList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.map(items-> items.size() > 0)
.blockingFirst();
}
A hacky way to do this would be:
private boolean hasNumber(List<Item> items) {
Boolean[] res = new Boolean[1];
res[0] = false;
Observable.from(items).filter(this::isNumber).toList().subscribe(list -> {
if(list.size() > 0) {
res[0] = true;
}
});
return res[0];
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With