此mvp框架相对来说是比较靠谱的
之前更新的mvp框架是非常简单的一种,非常适合初学者使用
但是不适合后期开发,无用功太多,所以说适合刚接触的了解mvp
==========================================================
其中的分包,接口回调,等等就不一一细说了
请求的 数据暂时就由假数据代替。
首先创建两个接口,IMainView、IMvpView
IMvpView是用来整个串联起来的用途,所以这个接口中不用有其他操作,只是有这个接口就行了
public interface IMainView extends IMvpView { void onsuccess(String str); void onerror(int errCode,String errMsg); }
因为只是展示mvp所以请求时数据中用假数据
public class OkHttpUtils { public OkHttpUtils(){ } public String getData1(){ return "哈哈哈哈"; } public String getData2(){ return "嘿嘿嘿嘿"; } }
之后是MainPresenter,继承BasePresenter
public class MainPresenter extends BasePresenter<IMainView> { private OkHttpUtils okHttpUtils; public MainPresenter(){ okHttpUtils = new OkHttpUtils(); } /** * 提供数据的方法 */ public void loadDataFrom(){ String str = okHttpUtils.getData1(); getView().onsuccess(str); } }
被继承的BasePresenter
public class BasePresenter<P extends IMvpView> { private P mIMvpView; public void attachView(P iMvpView){ this.mIMvpView = iMvpView; } public void detachView(){ mIMvpView =null; } public P getView(){ return mIMvpView; } }
BaseActivity,从MainActivity中抽取的基类
public abstract class BaseActivity<V extends BasePresenter> extends AppCompatActivity implements IMvpView { private V basePresenter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); initView(); basePresenter = initPresnter(); basePresenter.attachView(this); initData(); } protected V getPresenter(){ return basePresenter; } abstract void initView(); abstract void initData(); abstract V initPresnter(); }
MainActivity中
public class MainActivity extends BaseActivity<MainPresenter> implements IMainView { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override void initView() { } @Override void initData() { MainPresenter presenter = getPresenter(); presenter.loadDataFrom(); } @Override MainPresenter initPresnter() { return new MainPresenter(); } @Override public void onsuccess(String str) { Log.e("TAG",str+"...."); } @Override public void onerror(int errCode, String errMsg) { } }
运行之后没有什么效果,只是打印了一下日志,来证明此mvp是可以使用的