EasyMVP icon indicating copy to clipboard operation
EasyMVP copied to clipboard

在安卓上运用的MVP模式开发框架。A framework for MVP pattern in android.

EasyMVP

在安卓上运用的MVP模式开发框架。A framework for MVP pattern in android.

与传统MVP开发模式相反,EasyMVP是将activity,fragment, adapter作为presenter的mvp开发框架。

了解更多

重复依赖

butterknife

添加依赖:

gradle: Add it in your root build.gradle at the end of repositories:

allprojects {
		  repositories {
			  ...
			  maven { url "https://jitpack.io" }
		  }
	  }

Add the dependency:

	  dependencies {
	        compile 'com.github.Zane96:EasyMVP:v1.3.9'
	  }

###使用: View:

  public class MainListView extends BaseViewImpl

Presenter

  public class MainActivity extends BaseActivityPresenter<MainListView>

ViewHolder

  public class MainListViewHolder extends BaseListViewHolderImpl<Bean>

Adapter

  public class MyRecycleviewAdapter extends BaseListAdapterPresenter<Bean>

Model

  public class RecycleviewData implements IListModel

BaseListAdapterPresenter和BaseListViewHolderImpl的介绍

viewHolder与Adapter解耦的部分请看上述博客。将viewHolder于adapter分离,viewholder去管理item的view,给adapter瘦身。 更新介绍

  • 数据对象的集合全部在base类中进行管理,所有的数据操作都已经在BaseAdapterPresenter里面定义好了。开发者只需要在适配器里面调用继承过来的mDatas对象就可以操作数据了。具体可以看源码。
  • 解决特殊情况下一个recycleview需要展示不同数据源数据(多个model)的情况。例如一个recycleview的前5个item要展示Model A的数据,后5个item要展示Model B的数据。这样开发者需要写一个公共ModelC类,并且持有A,B的对象。并且这个C类实现框架IListModel接口,实现getViewType()(根据父类里面的之类实例对象是否为空来返回相应的type)方法。因为C类是适配器的类泛型,所以在getItemViewType方法里面去调用C里面的getViewType方法。但是以后可能会把这项工作放到框架总去做,因为现在没有太多的考虑head和foot的问题。A,B类是要继承C类,并且在将C类的数据集合生成的时候,必须要用相应的子类对象作为父类引用的指向对象,不然在viewHolder里面父类强转子类对象会报错哦(java基础)。具体实现请看demo中的代码。
  • 开发者不用再去adapter里面定义item的点击事件的接口回调,世界在代码里面**setOnRecycleViewItemClickListener()**就可以了。

版本更新介绍:

  • v1.3.9:直接向V层注入IPresenter
  • v1.3.7:修复了适配器中设置head,foot,itemcount出错的bug
  • v1.3.5:添加了view中的onPresenterDestory()方法,这个方法用于view与presenter的onDestory()方法同步。作用就是可以当presenter销毁的时候,在view中做相应的销毁操作。比如EventBus的unRegister,可以避免不必要的内存泄漏。
  • v1.3.1:主要修改在BaseListAdapter中:
    1. 开发者需要在adapter里面实现setHeadNum()和setFootNum()方法来告诉框架你添加的headhe foot的数量。
    2. 主要的数据源均在框架里面进行管理,开发者直接调用框架中的对集合操作的方法去操作mDatas变量。开发者当然也可以自定义数据变量。
  • v.1.3.0:强制使activity拥有提供context到view中的函数。因为有时候view的使用必须用到activity类型的context。提供的过程由框架内部完成,开发者只需要get,set就行。比如启动activity,启动Toast都可以在view中实现,解决java类作为View的一个很麻烦的问题。