Android的简单框架MVP

 
 

HttpUtil

public String getData(){
    return "牛,真牛";
}
IBaseView 
 
  
public interface IBaseView {
}

IMainView

 
   
 
   
public interface IMainView extends IBaseView { void onSuccess(String str);}
MainPresenter
public class MainPresenter extends BasePrsenter<IMainView> {

    private final HttpUtil httpUtil;

    public MainPresenter(){
        httpUtil = new HttpUtil();
    }

    public void loadDataFromServer(){
        String data = httpUtil.doGet();
        getView().onSuccess(data);
    }
}
BasePrsenter
 
    
public class BasePrsenter< V extends IBaseView> {
private V ibseView;
public void attachView( V ibseView){
this. ibseView = ibseView;
}
public V getView(){
return ibseView;
}
public void detachView(){
ibseView = null;
}}
BaseActivity
public abstract class BaseActivity<P extends BasePrsenter> extends AppCompatActivity implements IBaseView {

    public P presenter;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        initView();
        initBaseData();
        initData();
    }

    private void initBaseData() {

        presenter = getPresenter();
        if (presenter!=null){
            presenter.attachView(this);
        }else {
            try {
                throw new Exception("Activity返回的presenter是null的");
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

    protected abstract P getPresenter();
    protected abstract void initData();
    protected abstract void initView();
}
MainActivity
public class MainActivity extends BaseActivity<MainPresenter> implements IMainView {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void initData() {
        presenter.loadDataFromServer();
    }

    @Override
    protected MainPresenter getPresenter() {
        return new MainPresenter();
    }

    @Override
    protected void initView() {

    }

    @Override
    public void onSuccess(String str) {
        Log.e("zhuzhu",str);
    }

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

        presenter.detachView();
    }
}



猜你喜欢

转载自blog.csdn.net/ediao_nvhai/article/details/80006665