diff --git a/demo/build.gradle b/demo/build.gradle index 5a4d84d..25697dc 100644 --- a/demo/build.gradle +++ b/demo/build.gradle @@ -33,3 +33,4 @@ dependencies { compile project(':easymvp') } + diff --git a/demo/src/main/java/com/example/zane/demo/presenter/MainActivity.java b/demo/src/main/java/com/example/zane/demo/presenter/MainActivity.java index 712ba55..8ad315f 100644 --- a/demo/src/main/java/com/example/zane/demo/presenter/MainActivity.java +++ b/demo/src/main/java/com/example/zane/demo/presenter/MainActivity.java @@ -15,6 +15,7 @@ import com.example.zane.demo.Bean.RecycleviewData; import com.example.zane.demo.Constant; import com.example.zane.demo.view.MainListView; +import com.example.zane.easymvp.base.IPersenter; import com.example.zane.easymvp.base.IView; import com.example.zane.easymvp.presenter.BaseActivityPresenter; import com.example.zane.easymvp.presenter.BaseListAdapterPresenter; @@ -84,7 +85,7 @@ public void inDestory() { } @Override - public AppCompatActivity getContext() { + public IPersenter getPersenter() { return this; } diff --git a/demo/src/main/java/com/example/zane/demo/presenter/MainActivity2.java b/demo/src/main/java/com/example/zane/demo/presenter/MainActivity2.java index 772e18a..d78da2b 100644 --- a/demo/src/main/java/com/example/zane/demo/presenter/MainActivity2.java +++ b/demo/src/main/java/com/example/zane/demo/presenter/MainActivity2.java @@ -8,6 +8,7 @@ import com.example.zane.demo.R; import com.example.zane.demo.view.MainView2; +import com.example.zane.easymvp.base.IPersenter; import com.example.zane.easymvp.presenter.BaseActivityPresenter; /** @@ -39,7 +40,7 @@ public void inDestory() { } @Override - public Activity getContext() { + public IPersenter getPersenter() { return this; } } diff --git a/demo/src/main/java/com/example/zane/demo/view/MainListView.java b/demo/src/main/java/com/example/zane/demo/view/MainListView.java index 697a998..9599c9d 100644 --- a/demo/src/main/java/com/example/zane/demo/view/MainListView.java +++ b/demo/src/main/java/com/example/zane/demo/view/MainListView.java @@ -7,11 +7,14 @@ import android.widget.Toast; import com.example.zane.demo.R; +import com.example.zane.demo.presenter.MainActivity; import com.example.zane.demo.presenter.MyRecycleviewAdapter; +import com.example.zane.easymvp.base.IPersenter; import com.example.zane.easymvp.view.BaseViewImpl; import butterknife.Bind; + /** * Created by Zane on 15/12/20. */ @@ -26,9 +29,15 @@ public int getRootViewId() { return R.layout.activity_main; } +// @Override +// public void setActivityContext(Activity activity) { +// this.activity = activity; +// } + + @Override - public void setActivityContext(Activity activity) { - this.activity = activity; + public void injectPresenter(IPersenter persenter) { + activity = (MainActivity) persenter; } @Override diff --git a/demo/src/main/java/com/example/zane/demo/view/MainView2.java b/demo/src/main/java/com/example/zane/demo/view/MainView2.java index 5f00fee..742115b 100644 --- a/demo/src/main/java/com/example/zane/demo/view/MainView2.java +++ b/demo/src/main/java/com/example/zane/demo/view/MainView2.java @@ -7,10 +7,14 @@ import android.widget.Toast; import com.example.zane.demo.R; + +import com.example.zane.demo.presenter.MainActivity2; +import com.example.zane.easymvp.base.IPersenter; import com.example.zane.easymvp.view.BaseViewImpl; import butterknife.Bind; + /** * Created by Zane on 16/1/27. */ @@ -28,8 +32,8 @@ public int getRootViewId() { } @Override - public void setActivityContext(Activity activity) { - context = activity; + public void injectPresenter(IPersenter persenter) { + context = (Context) persenter; } @Override diff --git a/easymvp/build.gradle b/easymvp/build.gradle index adcd986..d124993 100644 --- a/easymvp/build.gradle +++ b/easymvp/build.gradle @@ -25,4 +25,4 @@ dependencies { compile 'com.android.support:support-v4:23.1.1' compile 'com.android.support:recyclerview-v7:23.1.1' compile 'com.jakewharton:butterknife:7.0.1' -} +} \ No newline at end of file diff --git a/easymvp/src/main/java/com/example/zane/easymvp/base/IPersenter.java b/easymvp/src/main/java/com/example/zane/easymvp/base/IPersenter.java new file mode 100644 index 0000000..23a3593 --- /dev/null +++ b/easymvp/src/main/java/com/example/zane/easymvp/base/IPersenter.java @@ -0,0 +1,10 @@ +package com.example.zane.easymvp.base; + +/** + * Created by Zane on 2017/5/11. + * Email: zanebot96@gmail.com + * Blog: zane96.github.io + */ + +public interface IPersenter { +} diff --git a/easymvp/src/main/java/com/example/zane/easymvp/base/IView.java b/easymvp/src/main/java/com/example/zane/easymvp/base/IView.java index 3f840dc..69ec5d8 100644 --- a/easymvp/src/main/java/com/example/zane/easymvp/base/IView.java +++ b/easymvp/src/main/java/com/example/zane/easymvp/base/IView.java @@ -49,9 +49,10 @@ public interface IView{ void removeView(); /** - * 在presenter里面返回自己的context给view层 + * 注入P + * @param persenter */ - void setActivityContext(Activity activity); + void injectPresenter(IPersenter persenter); /** * 在presenter销毁的时候调用,生命周期同步一下,有时候需要在view释放什么 diff --git a/easymvp/src/main/java/com/example/zane/easymvp/presenter/BaseActivityPresenter.java b/easymvp/src/main/java/com/example/zane/easymvp/presenter/BaseActivityPresenter.java index 6131230..fb065c5 100644 --- a/easymvp/src/main/java/com/example/zane/easymvp/presenter/BaseActivityPresenter.java +++ b/easymvp/src/main/java/com/example/zane/easymvp/presenter/BaseActivityPresenter.java @@ -5,20 +5,21 @@ import android.support.v7.app.AppCompatActivity; import android.util.Log; +import com.example.zane.easymvp.base.IPersenter; import com.example.zane.easymvp.base.IView; /** * Created by Zane on 15/12/18. */ -public abstract class BaseActivityPresenter extends AppCompatActivity{ +public abstract class BaseActivityPresenter extends AppCompatActivity implements IPersenter{ protected V v; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - Log.i("BaseActivityPresenter", "creat"); + try { v = getRootViewClass().newInstance(); } catch (InstantiationException e) { @@ -29,7 +30,7 @@ protected void onCreate(Bundle savedInstanceState) { v.creatView(getLayoutInflater(), null, savedInstanceState); v.initView(); - v.setActivityContext(getContext()); + v.injectPresenter(getPersenter()); setContentView(v.getRootView()); @@ -48,6 +49,6 @@ protected void onDestroy() { public abstract Class getRootViewClass(); public abstract void inCreat(Bundle savedInstanceState); public abstract void inDestory(); - public abstract Activity getContext(); + public abstract IPersenter getPersenter(); } diff --git a/easymvp/src/main/java/com/example/zane/easymvp/presenter/BaseFragmentPresenter.java b/easymvp/src/main/java/com/example/zane/easymvp/presenter/BaseFragmentPresenter.java index 57acdcb..50f70bb 100644 --- a/easymvp/src/main/java/com/example/zane/easymvp/presenter/BaseFragmentPresenter.java +++ b/easymvp/src/main/java/com/example/zane/easymvp/presenter/BaseFragmentPresenter.java @@ -9,12 +9,13 @@ import android.view.View; import android.view.ViewGroup; +import com.example.zane.easymvp.base.IPersenter; import com.example.zane.easymvp.base.IView; /** * Created by Zane on 15/12/18. */ -public abstract class BaseFragmentPresenter extends Fragment{ +public abstract class BaseFragmentPresenter extends Fragment implements IPersenter{ protected T v; @@ -29,7 +30,7 @@ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, e.printStackTrace(); } v.creatView(inflater, container, savedInstanceState); - v.setActivityContext((Activity) getContext()); + v.injectPresenter(getPersenter()); return v.getRootView(); } @@ -48,6 +49,5 @@ public void onDestroy() { } public abstract Class getRootViewClass(); - public abstract FragmentActivity getContext(); - + public abstract IPersenter getPersenter(); } diff --git a/easymvp/src/main/java/com/example/zane/easymvp/view/BaseViewImpl.java b/easymvp/src/main/java/com/example/zane/easymvp/view/BaseViewImpl.java index 9926dcf..3264da0 100644 --- a/easymvp/src/main/java/com/example/zane/easymvp/view/BaseViewImpl.java +++ b/easymvp/src/main/java/com/example/zane/easymvp/view/BaseViewImpl.java @@ -8,11 +8,13 @@ import android.view.View; import android.view.ViewGroup; +import com.example.zane.easymvp.base.IPersenter; import com.example.zane.easymvp.base.IView; import butterknife.ButterKnife; + /** * Created by Zane on 15/12/18. * 将view加载的过程写在抽象类,做到代码复用。 @@ -22,6 +24,7 @@ public abstract class BaseViewImpl implements IView { protected View view; protected final SparseArray mViews = new SparseArray<>(); + public void creatView(LayoutInflater inflater, ViewGroup parent, Bundle bundle) { int resourceId = getRootViewId(); @@ -47,7 +50,7 @@ public final void removeView() { ButterKnife.unbind(this); } - public abstract void setActivityContext(Activity activity); + public abstract void injectPresenter(IPersenter persenter); private final T bindView(int id) { T view2 = (T) mViews.get(id); diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 40fc9d1..635d3d8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Nov 09 15:31:30 CST 2016 +#Tue May 09 13:07:06 CST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.4.1-all.zip