How to transform a nested list of double values into a Java class using RxJava?

后端 未结 3 1304
灰色年华
灰色年华 2021-01-27 00:18

In my Android client I receive this JSON data from a backend:

[
    [
        1427378400000,
        553
    ],
    [
        1427382000000,
        553
    ]
]
         


        
3条回答
  •  萌比男神i
    2021-01-27 01:04

    If you change readProductLevels to emit each list item one at a time, you can then react to them one at a time:

    In mProductService:

    private Observable> readProductLevels() {
            return Observable.create(
                    new Observable.OnSubscribe>() {
                        @Override
                        public void call(Subscriber> subscriber) {
                            List> items = new ArrayList>();
                            List list1 = new ArrayList() {{
                                add(1D);
                                add(2D);
                            }};
                            items.add(list1);
                            List list2 = new ArrayList() {{
                                add(10D);
                                add(12D);
                            }};
                            items.add(list2);
                            List list3 = new ArrayList() {{
                                add(21D);
                                add(22D);
                            }};
                            items.add(list3);
    
                           // Imagine the list creation above is your Json parsing
    
    
                            for (List list : items) {
                                subscriber.onNext(list);
                            }
    
                            subscriber.onCompleted();
                        }
                    });
        }
    

    Allows you to subscribe to each item in your super list:

    private void getProductLevels() {
            Observable> responseObservable = readProductLevels();
            AppObservable.bindFragment(this, responseObservable)
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                            // TODO: Transform List> into List
                    .subscribe(
                            new Subscriber>() {
                                @Override
                                public void onCompleted() {
                                }
    
                                @Override
                                public void onError(Throwable e) {
                                }
    
                                @Override
                                public void onNext(List response) {
                                    new ProductLevel(response.get(0), response.get(1));
                                }
                            });
    
        }
    

提交回复
热议问题