简单的MVP

MVP

BaseActivity

package com.example.framework;

import android.os.Bundle;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.example.framework.manager.CacheManager;
import com.example.framework.manager.ShopManager;
import com.example.framework.view.LoadingPage;
import com.example.framework.view.ToolBar;

public abstract class BaseActivity<P extends BasePresenter> extends AppCompatActivity implements ToolBar.IToolbarListener , ShopManager.IConnectListener {

    protected P httpPresenter;
    protected ToolBar toolBar;
    protected LoadingPage loadingPage;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(loadingPage = new LoadingPage(this) {
            @Override
            protected int getSucessLayout() {
                return getLayoutId();
            }
        });
        initView();
        toolBar = findViewById(R.id.toolbar);
        toolBar.setToolbarListener(this);
        initPresenter();
        initData();

        ShopManager.getInstance().registerConnectListener(this);
        //注册Activity管理
        CacheManager.getInstance().addActivityList(this);
    }

    protected abstract int getLayoutId();

    protected abstract void initData();

    protected abstract void initPresenter();

    protected abstract void initView();


    @Override
    protected void onDestroy() {
        super.onDestroy();
        destroy();
    }

    public void destroy() {
        CacheManager.getInstance().removeActivityList(this);
        ShopManager.getInstance().unregisterConnectListener(this);
        if (httpPresenter != null) {
            httpPresenter.detachView();
            httpPresenter = null;
        }
    }

    @Override
    public void onLeftImgClick() {
        finish();
    }

    @Override
    public void onCenterTitleClick() {

    }

    @Override
    public void onRightImgClick() {

    }

    @Override
    public void onRightTitle() {

    }

    @Override
    public void onConnected() {
        Toast.makeText(this, "有网", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onDisconnected() {
        Toast.makeText(this, "没网", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
    }
}

BasePresenter

public class BasePresenter<V> {

    protected V iView;

    private List<Disposable> disposableList = new ArrayList<>();

    public synchronized void add(Disposable disposable){
        disposableList.add(disposable);
    }

    public void attachView(V iView){
        this.iView = iView;
    }


    public void detachView(){
        if (this.iView!=null)
        this.iView =null;
        for (Disposable disposable : disposableList) {
            if (disposable.isDisposed()) {
                disposable.dispose();
            }
        }
    }


}

IBaseView


public interface IBaseView {
    void showLoading();
    void hideLoading();
    void Error(String error);
}

  //异步线程
    api 'io.reactivex.rxjava2:rxjava:2.2.6'
    api 'io.reactivex.rxjava2:rxandroid:2.1.1'
    //网络框架
    api 'com.squareup.okhttp3:okhttp:3.12.1'
    //日志拦截器
    api 'com.squareup.okhttp3:logging-interceptor:3.11.0'
    //网络请求封装框架
    api 'com.squareup.retrofit2:retrofit:2.6.2'
    //网络请求对象解析器
    api 'com.squareup.retrofit2:converter-gson:2.6.2'
    //线程异常任务调度
    api 'com.squareup.retrofit2:adapter-rxjava2:2.6.2'
  //design   tablayout   recyclerview
    implementation 'com.google.android.material:material:1.1.0'
    //万能适配器
    implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.0'
    //图片处理框架
    implementation 'com.github.bumptech.glide:glide:4.12.0'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值