}
//要在model层写的
import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import com.bwei.rxjavaandretrofit.api.Api;import com.bwei.rxjavaandretrofit.api.ApiService;import com.bwei.rxjavaandretrofit.bean.GoodsInfo;import com.bwei.rxjavaandretrofit.bean.UserInfo;import com.bwei.rxjavaandretrofit.bean.WealInfo;import java.util.List;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;import rx.Observable;import rx.Observer;import rx.Subscriber;import rx.android.schedulers.AndroidSchedulers;import rx.functions.Action1;import rx.functions.Func1;import rx.schedulers.Schedulers;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // getNoParmar(); // getGoods(); getUser(); } private void getNoParmar() { Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.WEAL_URL) .addConverterFactory(GsonConverterFactory.create())//支持Gson解析 .addCallAdapterFactory(RxJavaCallAdapterFactory.create())//支持RxJava解析 .build(); ApiService apiService = retrofit.create(ApiService.class); //得到被观察者 Observable<WealInfo> observable = apiService.getNoParmars(); observable.subscribeOn(Schedulers.io())//io线程做耗时操作 .observeOn(AndroidSchedulers.mainThread())//主线程显示数据 .subscribe(new Observer<WealInfo>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { Log.i("xxxx", e.getMessage()); } @Override public void onNext(WealInfo goodsInfo) { //主线程 boolean error = goodsInfo.isError(); Log.i("xxx", error + ""); } }); } private void getGoods() { Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.GOODS_URL) .addConverterFactory(GsonConverterFactory.create())//支持Gson解析 .addCallAdapterFactory(RxJavaCallAdapterFactory.create())//支持RxJava解析 .build(); ApiService apiService = retrofit.create(ApiService.class); //得到被观察者 Observable<GoodsInfo> observable = apiService.getGoods(); observable.subscribeOn(Schedulers.io()) .map(new Func1<GoodsInfo, GoodsInfo>() {//一对一的转换 @Override public GoodsInfo call(GoodsInfo goodsInfo) { return goodsInfo; } }).observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<GoodsInfo>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(GoodsInfo goodsInfo) { String str = goodsInfo.getDropdown().get(0).get(0); Log.i("xxx", str); } }); }//这一种没写全 待续 private void getUser() { Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.USER_URL) .addConverterFactory(GsonConverterFactory.create())//支持Gson解析 .addCallAdapterFactory(RxJavaCallAdapterFactory.create())//支持RxJava解析 .build(); ApiService apiService = retrofit.create(ApiService.class); //得到被观察者 Observable<List<UserInfo>> observable = apiService.getUser("square", "retrofit"); observable.subscribeOn(Schedulers.io()) .flatMap(new Func1<List<UserInfo>, Observable<UserInfo>>() { @Override public Observable<UserInfo> call(List<UserInfo> userInfos) { return Observable.from(userInfos); } }).observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<UserInfo>() { @Override public void call(UserInfo userInfo) { int contributions = userInfo.getContributions(); Log.i("xxx", contributions + ""); } }); }
}
第一种在Model里的
public class MyModel { User user1; public interface NewModel{ void OnSuccess(User data); } NewModel newModel; public void getNewModel(NewModel newModel){ this.newModel=newModel; } public void getModel(int page){ Retrofit retrofit=new Retrofit.Builder().baseUrl(Api.USER_URL) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); AppService appService = retrofit.create(AppService.class); rx.Observable<List<User>> user = appService.getUser(page); user.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<List<User>>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(List<User> users) { for (int i = 0; i <users.size() ; i++) { user1 = users.get(i); } if(newModel!=null){ newModel.OnSuccess(user1); } } }); } } Api接口 import com.bw.rxjava.bean.User; import java.util.List; import retrofit2.http.GET; import retrofit2.http.Path; import rx.Observable; /** * Created by lenovo on 2018/3/15. */ public interface AppService { //http://mnews.gw.com.cn/wap/data/news/txs/page_1.json @GET("data/news/txs/page_{page}.json") Observable<List<User>> getUser(@Path("page") int page); } 第三种flatMap在Model层 public class MyModel { User user1; public interface NewModel{ void OnSuccess(User data); } NewModel newModel; public void getNewModel(NewModel newModel){ this.newModel=newModel; } public void getModel(int page){ Retrofit retrofit=new Retrofit.Builder().baseUrl(Api.USER_URL) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); AppService appService = retrofit.create(AppService.class); final rx.Observable<List<User>> user = appService.getUser(page); user.subscribeOn(Schedulers.io()) .flatMap(new Func1<List<User>, Observable<User>>() { @Override public Observable<User> call(List<User> users) { return Observable.from(users); } }) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<User>() { @Override public void call(User user) { if(newModel!=null){ newModel.OnSuccess(user); } } }); } }