package com.example.rxjava.bean; import java.util.ArrayList; import java.util.List; /** * Created by hp on 2017/11/3. */ public class Student { private String name; List<String> list = new ArrayList<>(); public String getName() { return name; } public void setName(String name) { this.name = name; } public List<String> getList() { return list; } public void setList(List<String> list) { this.list = list; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", list=" + list + '}'; } }
=======================
package com.example.rxjava; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import com.example.rxjava.bean.Student; import java.util.ArrayList; import java.util.List; import rx.Observable; import rx.Observer; import rx.Subscriber; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Func1; import rx.schedulers.Schedulers; import rx.subscriptions.CompositeSubscription; public class MainActivity extends AppCompatActivity { CompositeSubscription set; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); set = new CompositeSubscription(); Subscription s2 =Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("1"); subscriber.onNext("2"); subscriber.onCompleted(); subscriber.onNext("3"); Log.i("====55","call:"+Thread.currentThread()); } }).observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).subscribe(new Observer<String>() { @Override public void onCompleted() { Log.i("====", "onCompleted: "); } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Log.i("====", "onNext: " + s); Log.i("===", "onNext: " + Thread.currentThread()); } }); set.add(s2); String[] array={"1","2","3"}; List list=new ArrayList(); Subscription s1 = Observable.from(array).subscribe(new Observer<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Log.i("===from==", "onNext: "+ s); } }); set.add(s1); Observable.just(1111,"2222").subscribe(new Observer<Object>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Object s) { Log.i("===just==", "onNext: " + s); } }); Observable.from(array).map(new Func1<String, Integer>() { @Override public Integer call(String s) { return Integer.parseInt(s); } }).subscribe(new Observer<Integer>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Integer integer) { Log.i("==map==", "onNext: " + integer); } }); List<Student> sList=new ArrayList<>(); // for (int i = 0; i <10 ; i++) { // Student s=new Student(); // s.setName("虚"+i); // Log.i("===xuxuxuxuxuxux","" + s); // for (int j = 0; j <8; j++) { // s.getList().add("吃饭"+i+"---->"+j); // } // sList.add(s); // } for (int i = 0; i < 10; i++) { Student s = new Student(); s.setName("张" + i); for (int j = 0; j < 6; j++) { s.getList().add("课程" + i + "-->" + j); } sList.add(s); } Observable.from(sList).flatMap(new Func1<Student, Observable<String>>() { @Override public Observable<String> call(Student student) { return Observable.from(student.getList()); } }).subscribe(new Observer<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Log.i("==flatmap==", "onNext: " + s); } }); } @Override protected void onDestroy() { super.onDestroy(); set.unsubscribe(); } }============================
dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:26.+' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' compile 'io.reactivex:rxjava:1.0.14' compile 'io.reactivex:rxandroid:1.0.1' }