2017-01-12 37 views
5

还有就是从可观察类方法rxjava 1,但rxjava 2.没有发现我怎么能在下面的代码替换从方法rxjava 2:无法解析方法Observable.from在rxjava 2

List<Integer> ints = new ArrayList<>(); 
    for (int i=1; i<10; i++) { 
     ints.add(new Integer(i)); 
    } 
    Observable.just(ints) 
      .flatMap(new Function<List<Integer>, Observable<Integer>>() { 
       @Override 
       public Observable<Integer> apply(List<Integer> ints) { 
        return Observable.from(ints); 
       } 
      }) 

回答

10

您可以使用Observable.fromIterable(source)

documentation

一些运算符重载已经被改为以后缀,如 fromArray,fromIterable等等。原因是当 库用Java 8编译时,javac通常不能在功能接口类型之间消除 。

List<Integer> ints = new ArrayList<>(); 
for (int i=1; i<10; i++) { 
    ints.add(new Integer(i)); 
} 
Observable.just(ints) 
     .flatMap(new Function<List<Integer>, Observable<Integer>>() { 
      @Override 
      public Observable<Integer> apply(List<Integer> ints) { 
       return Observable.fromIterable(ints); 
      } 
     }) 
4

你并不需要使用.just(),因为你可以直接从你的列表,经由fromIterable()运营商创造Observable

Observable.fromIterable(ints)