RxJava

xiaoxiao2021-02-28  36

import com.bwei.rxjavaandretrofit.bean.GoodsInfo; import com.bwei.rxjavaandretrofit.bean.UserInfo; import com.bwei.rxjavaandretrofit.bean.WealInfo; import java.util.List; import retrofit2.http.GET; import retrofit2.http.Path; import rx.Observable; /**  * 1. 类的用途  * 2. @author forever  * 3. @date 2018/3/15 14:32  */ //包千万不要倒错 public interface ApiService {     /**      * 结合Retrofit+RxJava      * http://service.meiyinkeqiu.com/service/ads/cptj      *      * @param      * @return      */     @GET("data/福利/10/1")     Observable<WealInfo> getNoParmars();     @GET("service/ads/cptj")     Observable<GoodsInfo> getGoods();     @GET("repos/{square}/{retrofit}/contributors")     Observable<List<UserInfo>> getUser(@Path("square") String square, @Path("retrofit") String retrofit);

}

//要在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); } } }); } }

转载请注明原文地址: https://www.6miu.com/read-2622698.html

最新回复(0)