MVP练习网络请求

来源:互联网 发布:最新网络语言大全 编辑:程序博客网 时间:2024/06/17 07:11

UserModel


public class UserModel implements IModel {    ArrayList<UserBean.NewslistBean> list;
//使用公开的那个接口    private OnFinishLisenter lisenter;//定义一个公开的接口    public interface OnFinishLisenter{
//定义一个传值的方法,用来接收网络请求回来的数据        void OnFinish(ArrayList<UserBean.NewslistBean> list);    }//设置一个Set方法,穿进去那个接口类型的类,然后赋值    public void setOnUserModel(OnFinishLisenter lisenter) {        this.lisenter = lisenter;    }    @Override    public void getJson(String url) {        list = new ArrayList<>();        Retrofit retrofit = new Retrofit.Builder().baseUrl(url).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build();        ApiService apiService = retrofit.create(ApiService.class);        Observable<UserBean> user = apiService.getUser();        user.subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Observer<UserBean>() {                    @Override                    public void onCompleted() {                    }                    @Override                    public void onError(Throwable e) {                    }                    @Override                    public void onNext(UserBean userBean) {                        list = (ArrayList<UserBean.NewslistBean>) userBean.getNewslist();                        //Log.d("Main","+++++++++++++++++++++++++++++");
//调用定义的赋值方法,把网络请求回来的数据传进去                        lisenter.OnFinish(list);                    }                });    }}


UserPresenter



public class UserPresenter implements UserModel.OnFinishLisenter{//实现接口    private final IView userView;    private final UserModel userModel;    public UserPresenter(IView userView) {        this.userView = userView;        this.userModel = new UserModel();
//初始化Set方法,将当前类传进去        userModel.setOnUserModel(this);    }    public void setJson(String url){        userModel.getJson(url);//        userModel.setOnUserModel(new UserModel.OnFinishLisenter() {//            @Override//            public void OnFinish(ArrayList<UserBean.NewslistBean> list) {//                userView.getUser(list);//            }//        });    }
//重写方法,里面的LIst集合现在就有数据了下面直接使用就好    @Override    public void OnFinish(ArrayList<UserBean.NewslistBean> list) {        userView.getUser(list);    } /*   @Override    public void OnFinish(ArrayList<UserBean.NewslistBean> list) {//        ArrayList<UserBean.NewslistBean> mlist;//        mlist = new ArrayList<>();//        mlist = list;    }*/}

原创粉丝点击