MVPro是一款 Android 上的 MVP 框架。

MVPro的灵感来自

《一种在 android 中实现 MVP 模式的新思路》

和《用 MVP 架构开发 Android 应用》两篇文章。

Presenter

在MVPro中,将 Activity,Fragment 作为 Presenter,并且提供了轻量级的 ActivityPresenterImpl、FragmentPresenterImpl、FragmentActivityImpl 的实现,

在项目中可以直接继承这些实现去做自己的 presenter。

IPresenter 作为 Presenter 必须要实现的接口,提供的方法有:

/**
* 获取当前 presenter 泛型的类型
* @return
*/
Class getViewClass();
/**
* View 初始化之前可以在此方法做一些操作
*/
void create(Bundle savedInstance);
/**
* View 初始化完毕后调用
*/
void created(Bundle savedInstance);

其中 getViewClass 在 Ipresenter 的实现类中已经完成了实现,我们的项目中无需考虑.

create 方法是在 setContentView 之前调用的,我们可以在该方法中实现例如:requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);等工作。

created 方法是在 setContentView 之后调用,可以根据业务需要做自己的逻辑。

View

在MVPro中,View 层必须要实现 IView 接口,当然MVPro也提供了 ViewImpl 一个轻量级的实现,在我们的项目中完全可以直接继承 ViewImpl。

IView 提供的方法有:

/**
* 根据 {@link getLayoutId}方法生成生成 setContentView 需要的根布局
* @param inflater
* @param container
* @return
*/
View create(LayoutInflater inflater, ViewGroup container);
/**
* 当 Activity 的 onCreate 完毕后调用
*/
void created();
/**
* 返回当前视图需要的 layout 的 id
* @return
*/
int getLayoutId();
/**
* 根据 id 获取 view
* @param id
* @param 
* @return
*/
 V findViewById(int id);
/**
* 绑定 Presenter
* @param presenter
*/
void bindPresenter(IPresenter presenter);
/**
* {@link created}后调用,可以调用{@link org.loader.helper.EventHelper.click}
* 等方法为控件设置点击事件,一般推荐使用{@link org.loader.helper.EventHelper.click(IPresenter presenter, View ...views)}
* 方法并且让你的 Presenter 实现相应接口。
*/

void bindEvent();

create 方法需要我们根据提供的 layout 设置布局,不过这个工作在 ViewImpl 已经完成了。

created 方法在 create 之后调用,这里我们可以根据 id 获取一些 view 的对象。

getLayoutId 需要返回我们关系的布局的 id。

findViewById 提供了一个无需类型转换的查找方法,让代码更清爽,同样它在 ViewImpl 已经实现。

bindPresenter 设置绑定的 Presenter,已经实现。

bindEvent 设置 view 的各种实现,可以通过 EventHelper 类轻松的为 view 设置各种常用的事件。

Model

在MVPro中并没有提供关于 Model 的代码,这是因为MVPro并不关心你的项目的业务层的实现,这样做的目的是为项目提供更加灵活性的实现方式。

关于MVPro的详细使用,可以参考源码中提供了 test1 和 test2 两个实例项目。

声明

MVPro是基于其他一些优秀的文章实现,并且在将来会不断完善。