andiag-mvp

Additional

Language
Java
Version
0.4 (Feb 15, 2017)
Created
Dec 24, 2016
Updated
Feb 15, 2017
Owner
Iago Santos (iagocanalejas)
Contributors
Iago Santos (iagocanalejas)
andy135
2
Activity
Badge
Generate
Download
Source code
APK file

Commercial

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() and onPause().
  • For Fragments
    • Extend AIFragment
    • Use annotation @Presenter(presenter = MyPresenter.class)
    • Presenters can comunicate with view between onViewCreated(...) and onDestroyView(...).

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>'
    }

    Documentation for commons is available here

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:

  1. 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.
  2. If its a feature, bugfix, or anything please only change code to what you specify.
  3. Please keep PR titles easy to read and descriptive of changes, this will make them easier to merge.
  4. Pull requests must be made against develop branch. Any other branch (unless specified by the maintainers) will get rejected.
  5. 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.