pengkv的专栏

一路精彩

RxJava常用功能

精彩推荐:给 Android 开发者的 RxJava 详解

//RxJava 有2个最基本概念:Observable (可观察者,即被观察者)、 Observer (观察者)

1.创建Observable对象

Observable<String> myObservable = Observable.create(new Observable.OnSubscribe<String>() {
    @Override
    public void call(Subscriber<? super String> subscriber) {

    }
});

2.简洁代码创建Observable对象

Observable<String> myObservable2 = Observable.just("Hello, world!");

3.单事件处理

Action1<String> onNextAction = new Action1<String>() {
    @Override
    public void call(String s) {
        System.out.println(s);
    }
};

myObservable2.subscribe(onNextAction);

3.单事件处理(简洁)

Observable.just("").subscribe(new Action1<String>() {
    @Override
    public void call(String s) {

    }
});

4.map操作符,把一个事件转化成另一个事件

Observable.just("").map(new Func1<String, Integer>() {
    @Override
    public Integer call(String s) {
        return s.hashCode();
    }
}).subscribe(new Action1<Integer>() {
    @Override
    public void call(Integer integer) {

    }
});

5.from接收一个集合作为输入,然后每次输出一个元素给subscriber

Observable<List<String>> query(String text);
final String[] urls = new String[]{"1", "2", "3"};

//本来要这么写
query("").subscribe(new Action1<List<String>>() {
    @Override
    public void call(List<String> strings) {
        for (String url : urls) {
            Log.v("-->", url);
        }
    }
});

//现在这么写
query("").subscribe(new Action1<List<String>>() {
    @Override
    public void call(List<String> strings) {
        Observable.from(urls).subscribe(new Action1<String>() {
            @Override
            public void call(String s) {
                Log.v("-->", s);
            }
        });
    }
});

6.flatMap实现一对多的转化

Student[] students = ...;
Subscriber<Course> subscriber = new Subscriber<Course>() {
    @Override
    public void onNext(Course course) {
        Log.d(tag, course.getName());
    }
    ...
};
Observable.from(students)
    .flatMap(new Func1<Student, Observable<Course>>() {
        @Override
        public Observable<Course> call(Student student) {
            return Observable.from(student.getCourses());
        }
    })
    .subscribe(subscriber);
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pengkv/article/details/51564126
个人分类: android 集中营
上一篇StickListView--悬停效果
下一篇自定义View--最近刚开始流行的倾斜列表/图片
想对作者说点什么? 我来说一句

rxjava retrofit 框架

2018年01月05日 141KB 下载

RxJava 中文文档

2017年07月13日 1.95MB 下载

RxJava编程思想

2018年01月26日 7.61MB 下载

RxJava技术手册

2018年01月26日 5.39MB 下载

rxjava 官方文档中文翻译

2018年02月05日 31.09MB 下载

RxJava RxAndroid jar

2017年10月30日 843KB 下载

没有更多推荐了,返回首页

关闭
关闭