MVP

仅供个人参考

IModdel 不做操作 
public interface IPressent<V extends  IView> {
     void attach(V v);
     void  detach();
}
public interface IView<V extends  IView> {
    public void onSuccess(V v);

    public  void onErrer();
}
 ******cou总和层

public interface MainContract {
    interface MainView extends IView {
        void showList(String result);
    }

    interface MainModel extends IModdel {

        interface NetCallback {
            void onSuccess(String result);

            void onError(String meg);
        }

        void loadData(String url, NetCallback callback);
    }

    interface MainPresenter extends IPressent<MainView> {

        void loadData(String url);
    }
}
mode层中OKhttp

public class OKhttpUtils {
    public interface NetCallback {
        void success(String result);

        void error(String errorMsg);
    }

    private Handler mHandler;

    private OkHttpClient mOkHttpClient;

    {
        /* 日志拦截器 */
        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

        /* OKHttpClient */
        mOkHttpClient = new OkHttpClient
                .Builder()
                .addInterceptor(interceptor)
                .build();

        mHandler = new Handler(Looper.getMainLooper());
    }

    private static final OKhttpUtils ourInstance = new OKhttpUtils();

    public static OKhttpUtils getInstance() {
        return ourInstance;
    }

    private OKhttpUtils() {
    }

    public void get(String url, final NetCallback netCallback) {
        Request request = new Request
                .Builder()
                .url(url)
                .build();
        mOkHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        if (netCallback != null) {
                            netCallback.error(e.getMessage());
                        }
                    }
                });
            }

            @Override
            public void onResponse(Call call, final Response response) throws IOException {
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        if (netCallback != null) {
                            try {
                                netCallback.success(response.body().string());
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                });
            }
        });
    }

    public void post() {

    }
}
Main层 
public class MainModel implements MainContract.MainModel {
    private OKhttpUtils oKhttpUtils;


    public  MainModel(){
        oKhttpUtils=OKhttpUtils.getInstance();
    }
    @Override
    public void loadData(String url, final NetCallback callback) {
        oKhttpUtils.get(url, new OKhttpUtils.NetCallback() {
            @Override
            public void success(String result) {
                callback.onError(result);
            }

            @Override
            public void error(String errorMsg) {
          callback.onError(errorMsg);
            }
        });
    }
}
p层
public class MainPresent implements MainContract.MainPresenter {
    private WeakReference<MainContract.MainView> viewWeakReference;
    private  WeakReference<MainModel> modelWeakReference;


    @Override
    public void loadData(String url) {
     modelWeakReference.get().loadData(url, new MainContract.MainModel.NetCallback() {
      @Override
      public void onSuccess(String result) {
          viewWeakReference.get().showList(result);
      }

      @Override
      public void onError(String meg) {

      }
  });
    }

    @Override
    public void attach(MainContract.MainView mainView) {
   viewWeakReference=new WeakReference(mainView);
   modelWeakReference=new WeakReference(new MainPresent());
    }

    @Override
    public void detach() {
        if (viewWeakReference != null) {
            viewWeakReference.clear();
            viewWeakReference = null;
            modelWeakReference.clear();
            modelWeakReference = null;
        }
    }
}
之后  主界面 这样引用:public class MainActivity extends AppCompatActivity  implements MainContract.MainView {}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值