Не удается разрешить метод Observable.from в rxjava 2

В классе Observable в rxjava 1 есть метод from, но его нет в rxjava 2. Как я могу заменить метод 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);
                }
            })

person s-hunter    schedule 12.01.2017    source источник


Ответы (4)


Вы можете использовать Observable.fromIterable(source)

Из документации:

Некоторые перегрузки операторов были переименованы с постфиксом, например 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);
            }
        })
person Pavan Kumar    schedule 12.01.2017

Вам не нужно использовать .just(), потому что вы можете создать Observable прямо из вашего списка с помощью оператора fromIterable().

    Observable.fromIterable(ints)
person Alexander Perfilyev    schedule 12.01.2017

Думаю, уже немного поздно, но я просто хотел сообщить людям, что изменения API, связанные с оператором from в Документация по RxJava:

from преобразовано в fromArray, fromIterable, fromFuture

person cesards    schedule 09.04.2018

Если вам нужен список, вы можете просто использовать Java Stream и создать из него List, а затем передать его непосредственно в _ 3_. Нравится:

Observable.fromIterable(IntStream.rangeClosed(lowerLimitInclusive,upperLimitInclusive)
            .boxed()
            .collect(Collectors.toList()));   

Or

Observable.fromIterable(Stream.iterate(lowerLimitInclusive, integer -> integer + 1)
                .filter(integer -> integer < (upperLimit+1))
                .limit((long(upperLimit+1)-long(lowerLimitInclusive))
                .collect(Collectors.toList()));  
person Shankha057    schedule 06.11.2019