RxJava的map用法

谢高雄 / 文 发表于2017-02-27 15:31 次阅读 rxjava map,rxjava
map的作用:可以将一种数据类型,转换成另一种数据类型。

点击事件doSomeWork触发
doSomeWork(){
    getObservable()
            //第一步:准备源数据
            .subscribeOn(Schedulers.io())
            //通过map方法,可以将源数据转换成目标数据。将List<ApiUser>转换成List<User>
            .map(Function<List<ApiUser>, List<User>>() {
                List<User> apply(List<ApiUser> apiUsers) Exception {
                    //具体的转换方式,最后return目标数据
                    //将List<ApiUser>转换成List<User>
                    return List<User>数据;
                }
            })
            .observeOn(AndroidSchedulers.())
            //得到目标数据了,要怎么处理 
            .subscribe(getObserver());
}

//原数据的获取
private Observable<List<ApiUser>> getObservable(){
    return Observable.create(new ObservableOnSubscribe<List<ApiUser>>() {
        @Override
        public void subscribe(ObservableEmitter<List<ApiUser>> e) throws Exception {
            if(!e.isDisposed()){
                //在onNext方法中,将原数据给“发射”出去
                e.onNext(原数据List<ApiUser>);
                
                如果不调用onComplete()方法,那么观察者的onComplete方法是不会被调用的
                e.onComplete();
            }
        }
    });
}

private Observer<List<User>> getObserver(){
    return new Observer<List<User>>() {
        @Override
        public void onSubscribe(Disposable d) {
            Log.e("map","    onSubscribe " + d.isDisposed());
        }
        @Override
        public void onNext(List<User> users) {
            目标数据的处理
        }
        @Override
        public void onError(Throwable e) {
        }
        @Override
        public void onComplete() {
        }
    };
}


收藏 赞 (0) 踩 (0)