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);