2017-02-04 4 views
2

Ich bin neu in rxJava.RxJava Filter Operator

Nun, ich habe einige Beispiele getestet, um Operatoren in rxJava zu integrieren. Also, ich habe ein Problem mit diesem:

Observable.just("JUAN", "LUCILA", "ARMANDO").map(new Function<String, Integer>() { 
     @Override 
     public Integer apply(String s) throws Exception { 
      return s.length(); 
     } 
    }).all(new Predicate<Integer>() { 
     @Override 
     public boolean test(Integer integer) throws Exception { 
      return integer > 0; 
     } 
    }).filter(new Predicate<Boolean>() { 
     @Override 
     public boolean test(Boolean aBoolean) throws Exception { 
      return aBoolean; 
     } 
    }).subscribe(new Observer<Boolean>() { 
     @Override 
     public void onSubscribe(Disposable d) { 

     } 

     @Override 
     public void onNext(Boolean value) { 
      Log.d("STATUS: ", "OK"); 
     } 

     @Override 
     public void onError(Throwable e) { 

     } 

     @Override 
     public void onComplete() { 
      Log.d("STATUS: ", "COMPLETE"); 
     } 
    }) 

So Android Studio markiert mir Fehler auf subscribe (neu Observer). Mein Ziel ist die Umwandlung der Namen in eine Zahl von der Länge, so mit allem, was ich hoffe, eine Bedingung, offensichtlich wird es wahr, und spät, Filter, dass TRUE, von Filter, und zeigen Sie mir eine Protokollmeldung OK!

Ich hoffe, dass Sie mir helfen können! Danke!

Antwort

1

prüfen Single bei http://reactivex.io/RxJava/2.x/javadoc/

Wie gesagt im Kommentar Observable.all(...) Sie Typ haben Single dann von Single.filter(...) Sie Typ Maybe haben.

So verwenden Sie toObservable() und dann abonnieren.

@CheckReturnValue 
@SchedulerSupport(SchedulerSupport.NONE) 
public final Maybe<T> filter(Predicate<? super T> predicate) { 
    ObjectHelper.requireNonNull(predicate, "predicate is null"); 
    return RxJavaPlugins.onAssembly(new MaybeFilterSingle<T>(this, predicate)); 
} 

`

Wechsel zu

Observable.just("JUAN", "LUCILA", "ARMANDO").map(new Function<String, Integer>() { 
      @Override 
      public Integer apply(String s) throws Exception { 
       return s.length(); 
      } 
     }).all(new Predicate<Integer>() { 
      @Override 
      public boolean test(Integer integer) throws Exception { 
       return integer > 0; 
      } 
     }).filter(new Predicate<Boolean>() { 
      @Override 
      public boolean test(Boolean aBoolean) throws Exception { 
       return aBoolean; 
      } 
     }).toObservable().subscribe(new Observer<Boolean>() { 
      @Override 
      public void onSubscribe(Disposable d) { 

      } 

      @Override 
      public void onNext(Boolean value) { 
       Log.d("STATUS: ", "OK"); 
      } 

      @Override 
      public void onError(Throwable e) { 

      } 

      @Override 
      public void onComplete() { 
       Log.d("STATUS: ", "COMPLETE"); 
      } 
     }); 
+1

glaube ich, die Art Änderungen an' Single' bei 'Observable.all (...)', dann 'Maybe' bei' Einzel. Filter (...) '. Seit 'Observable.filter (...)' gibt 'Observable' zurück. – Kiskae

+0

@Kiskae ja es ist nach der Quelle – Raghunandan

+0

Ok, das funktioniert. Danke @Raghunandan – Juandqt

Verwandte Themen