Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to return boolean value when subscribe with rxjava

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.


2 Answers

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();
}
like image 123
Alan Avatar answered Mar 27 '26 09:03

Alan


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];
  }
like image 41
Prashant Pandey Avatar answered Mar 27 '26 10:03

Prashant Pandey



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!