⚡ Simple, Tiny, Extendable Android MVP library. No complex Base Activity, Base Fragment or Base View. Just base Presenters and View interface for you to extend from. For MVP Cheatsheet read this.
Step 1. Add JitPack repository to your top level build.gradle file
allprojects{repositories{... maven{url 'https://jitpack.io' } } }Step 2. Add library dependency to your module build.gradle file
dependencies{... compile 'com.jemshit:EliteMvp:2.0.2' }There are 7 base Presenter classes to extend from and 1 base View interface.
- EliteView: empty View interface. Your custom View interfaces must extend this.
- EliteCorePresenter: Presenter interface with only 2 methods (
attachView(V),detachView()). Your custom Presenter can implement this or you can use one of the ready Presenters listed below. - ElitePresenter: Simple Presenter with ready methods (
getView(),isViewAttached(),onDestroy()) for holding View reference. Your custom Presenter can extend this and add additional methods. - EliteRx1Presenter: Simple Presenter that has 2 additional methods (
addToOnAttachSubscriptions(s),addToOnCreateSubscriptions(S)) for adding RxJava 1Subscriptions intoCompositeSubscription. - EliteRx2Presenter: Simple Presenter that has 2 additional methods (
addToOnAttachDisposables(D),addToOnCreateDisposables(D)) for adding RxJava 2Disposables intoCompositeDisposable. - EliteNullViewPresenter: Presenter which returns empty View after View is detached, so no need for
view!=nullcheck. Returned empty View methods does nothing when called, read more about Null Object Pattern here. - EliteNullViewRx1Presenter: Presenter which follows Null Object Pattern and has two
CompositeSubscriptions for RxJava 1Subscriptions. - EliteNullViewRx2Presenter: Presenter which follows Null Object Pattern and has two
CompositeDisposables for RxJava 2Disposables.
UML Diagram:
publicinterfaceYourActivityContract{interfaceViewextendsEliteView{voidviewMethod()} abstractclassPresenterextendsElitePresenter<YourActivityContract.View>{publicabstractvoidpresenterMethod()} }publicclassYourActivityPresenterextendsYourActivityContract.Presenter{@OverridepublicvoidpresenterMethod(){if(isViewAttached()) getView().viewMethod()} }publicclassYourActivityextendsAppCompatActivityimplementsYourActivityContract.View{{privateYourActivityContract.Presenterpresenter; @OverrideprotectedvoidonCreate(@NullableBundlesavedInstanceState){super.onCreate(savedInstanceState); setContentView(R.layout.activity_your); presenter = newYourActivityPresenter(); presenter.attachView(this); presenter.presenterMethod()} @OverridepublicvoidviewMethod(){...} @OverrideprotectedvoidonDestroy(){super.onDestroy(); presenter.onDestroy()} }⭕ Check Samples for more examples.
⭕ For Orientation Change, Presenter Retaining, Caching... check applied solutions from community here

