Skip to content
/ EasyMVP Public

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

Notifications You must be signed in to change notification settings

Zane96/EasyMVP

Repository files navigation

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的一个很麻烦的问题。

About

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

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages