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; }*/ }