AndIag MVP Library
Library to help developers build full MVP apps.
CHANGELOG
Usage
- Create your presenters extending AIPresenter or implementing AIInterfacePresenter
- C -> Your view context (Application or Context for Activities, Activities or Context for Fragmentes)
- V -> Your view interface should implement AIDelegatedView
- For Activities
- Extend AIActivity
- Use annotation
@Presenter(presenter = MyPresenter.class)
- Presenters can comunicate with view between
onResume()
andonPause()
.
- For Fragments
- Extend AIFragment
- Use annotation
@Presenter(presenter = MyPresenter.class)
- Presenters can comunicate with view between
onViewCreated(...)
andonDestroyView(...)
.
Configuration
-
Add this lines your root-folder gradle:
allprojects { repositories { maven { url 'https://jitpack.io' } } }
And this to your module-folder gradle:
dependencies { compile 'com.github.iagocanalejas:andiag-mvp:core:<VERSION>' }
-
We have also implemented a common library that contains extensions:
dependencies { compile 'com.github.iagocanalejas:andiag-mvp:commons:<VERSION>' }
Basic example
- Create your repository
public class MyRepository extends AIRepository { }
- Create your presenter
@Repository(repository = MyRepository.class) // Not required annotation @Repository(repository = MySingletonRepository.class, initiator = "getInstance") // Use this for singletons public class MyPresenter extends AIPresenter<MyActivity, MyInterface> { public MyPresenter(){ super(); // Don't forget to call super constructor or repository will not be injected //Required default constructor } /*CALLS TO VIEW*/ /*CALLS FROM VIEW*/ }
- Use it in your Fragment
@Presenter(presenter = MyPresenter.class) public class FragmentMain extends AIFragment<MyPresenter> implements MyInterface { /*Fragment methods*/ /*CALLBACKS FOR THE PRESENTER*/ }
You can see a working example in the demo-app
Code Examples
Recomendations
- Use a different Presenter for each purpose
- Move all your Activity/Fragment logic to the presenter
Pull Requests
I welcome and encourage all pull requests. Here are some basic rules to follow to ensure timely addition of your request:
- Match coding style (braces, spacing, etc.) This is best achieved using CMD+Option+L (on Mac) or Ctrl+Alt+L on Windows to reformat code with Android Studio defaults.
- If its a feature, bugfix, or anything please only change code to what you specify.
- Please keep PR titles easy to read and descriptive of changes, this will make them easier to merge.
- Pull requests must be made against
develop
branch. Any other branch (unless specified by the maintainers) will get rejected. - Have fun!
Applications
Maintained By
IagoCanalejas ( @iagocanalejas)
Andy ( @ANDYear21)
LICENSE
Copyright 2016 AndIag
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.