rxjava:如何在链中传递一组数据

时间:2017-06-16 19:06:21

标签: group-by observable rx-java2

我有一个记录列表,我想在每次迭代中处理10条记录。那么我怎么能有一个可观察到的链上发现10条记录的列表

以下代码不完整/正确。我已添加它以显示我正在尝试的内容

new Function<Cursor, Observable<List<A>>>() {
                @Override
                public Observable<List<A>> apply(final Cursor cursor) throws Exception {
                    return Observable.create(new ObservableOnSubscribe<List<A>>() {

                        @Override
                        public void subscribe(ObservableEmitter<List<A>> e) throws Exception {
                            List <A> list = new ArrayList<Attendee>();

                            Attendee attendee;
                            while ((attendee = pendingUpSyncAttendeeCursor.getNextItem()) != null ) {
                                list.add(pendingUpSyncAttendeeCursor.getNextItem());
                            }

                            e.onNext(list);
                            e.onComplete();

                        }
                    });

                }
            }
    ).groupBy(new Function<List<Attendee>, Object>() {

1 个答案:

答案 0 :(得分:0)

不确定如果我明白你想要什么。这是一个代码,其中每个迭代形成一个10的列表我返回该列表的10个元素的列表

@Test
public void twoDeepLevel() {
    List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20);
    Observable.from(list)
            .flatMap(number -> Observable.from(list)
                    .take(10)
                    .collect(ArrayList<Integer>::new, ArrayList::add))
            .scan(new ArrayList<>(),
                    (lastItemEmitted, newItem) -> {
                        lastItemEmitted.add(newItem);
                        return lastItemEmitted;
                    })
            .subscribe(System.out::println, System.out::println);
}

您可以在此处查看更多有关reactiveX的示例

https://github.com/politrons/reactive