rxjava/rxandroid开发所需jar包:点击下载
依赖库:
compile 'com.jakewharton:butterknife:7.0.1'//注解 compile 'io.reactivex:rxandroid:1.1.0' // RxAndroid compile 'io.reactivex:rxjava:1.1.0' // 推荐同时加载RxJava
1,操作基本数据类型:
//被观察者:
rx.Observable.OnSubscribe mOnSubscribeAction = new rx.Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("这是一个字符串");//发送事件 subscriber.onNext("第二个"); subscriber.onCompleted();//完成事件必须写。 } };
点击出发订阅者:
case R.id.btn1: rx.Observable<String> observable = rx.Observable.create(mOnSubscribeAction); //分发订阅信息 observable.observeOn(AndroidSchedulers.mainThread()); observable.subscribe(mTextSubscriber);//两个订阅者 observable.subscribe(mToastSubscriber); break;
//我们的订阅者,用于操作
//创建两个订阅者 //1,控件订阅者 Subscriber<String> mTextSubscriber = new Subscriber<String>() { @Override public void onCompleted() { System.out.println("mTextSubscriber:onCompleted"); } @Override public void onError(Throwable e) { System.out.println("mTextSubscriber:onError"); e.printStackTrace(); } @Override public void onNext(String s) { btn2.setText(s); } }; //2,吐司订阅者 Subscriber<String> mToastSubscriber = new Subscriber<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { e.printStackTrace(); } @Override public void onNext(String s) { Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show(); } };
2,操作集合:
初识集合数据:
private void initData() { list = new ArrayList<>(); for (int i = 0; i < 10; i++) { Map<String, String> map = new HashMap<>(); map.put("name", "我的名字" + i); map.put("address", "我的地址" + i); list.add(map); } }
调用:
Observable.from(list).map(new Func1<Map<String, String>, Map>() { @Override public Map<String, String> call(Map<String, String> stringStringMap) { return stringStringMap; } }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Map>() { @Override public void call(Map map) { System.out.println(map.get("name")); System.out.println(map.get("address")); } });
调用2:
创建订阅:
Subscriber<Map<String, String>> mapSubscriber = new Subscriber<Map<String, String>>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Map<String, String> stringStringMap) { System.out.println("这里的姓名:" + stringStringMap.get("name")); // Integer.parseInt("kkk"); } };
调用订阅
Observable.from(list).map(new Func1<Map<String, String>, Map<String, String>>() { @Override public Map call(Map<String, String> stringStringMap) { return stringStringMap; } }).subscribe(mapSubscriber);