All Projects → vestrel00 → Android Dagger Butterknife Mvp

vestrel00 / Android Dagger Butterknife Mvp

Licence: apache-2.0
Simple application using Dagger Android (2.11-2.17), Butterknife (8.7-8.8), and Model-View-Presenter (MVP) with support for Singleton, Activity, Fragment, and child Fragment scopes written in Java and Kotlin

Programming Languages

java
68154 projects - #9 most used programming language
kotlin
9241 projects

Projects that are alternatives of or similar to Android Dagger Butterknife Mvp

AndroidStarterAlt
A sample View-based Android app using the MVP architecture. It uses Mosby, Dagger2, RxJava, retrofit, LoganSquare, requery, EventBus, Conductor.
Stars: ✭ 27 (-87.67%)
Mutual labels:  mvp, butterknife
Fineract-CN-mobile
DEPRECATED project - Check the Apache fineract-cn-mobile project instead
Stars: ✭ 17 (-92.24%)
Mutual labels:  mvp, butterknife
ContactsApp
Go-Jek Engineering Task Used MVP and Unit Testing Espresso, Mock Webserver and Activity Instrumentation Tests ,RxJava + RxAndroid + Retrofit 2 + OkHttp 3 + Dagger2 + ButterKnife+ Glide + Active Android ORM
Stars: ✭ 21 (-90.41%)
Mutual labels:  mvp, butterknife
MVPHulk
Android MVP 快速集成方案 (支持AndroidX)
Stars: ✭ 19 (-91.32%)
Mutual labels:  mvp, butterknife
Android Mvp Starter
Create/Generate your MVP projects easily
Stars: ✭ 72 (-67.12%)
Mutual labels:  mvp, butterknife
Android-Starter-Kit
This is up-to-date android studio project for native android application, that is using modern tools and libraries.
Stars: ✭ 16 (-92.69%)
Mutual labels:  mvp, butterknife
Weather-Guru-MVP
Sample Material-design Android weather application build with MVP architectural approach using Dagger2, RxJava2, Retrofit2, Event-Bus, GreenDao, Butterknife, Lottie etc.
Stars: ✭ 15 (-93.15%)
Mutual labels:  mvp, butterknife
Marvel
Marvel Characters Android Application Assigned by smava GmbH
Stars: ✭ 227 (+3.65%)
Mutual labels:  mvp, butterknife
Business Search App Java
Showcases object oriented programming in Java, Java Swing, Kotlin, and Android
Stars: ✭ 53 (-75.8%)
Mutual labels:  mvp, butterknife
Rxjava Mvp Giphy
Showcase of RxJava used with MVP and some other popular android libraries
Stars: ✭ 429 (+95.89%)
Mutual labels:  mvp, butterknife
Dmgameapp
⭐️【游戏资讯】一款游戏资讯应用
Stars: ✭ 304 (+38.81%)
Mutual labels:  mvp, butterknife
Mvparms
⚔️ A common architecture for Android applications developing based on MVP, integrates many open source projects, to make your developing quicker and easier (一个整合了大量主流开源项目高度可配置化的 Android MVP 快速集成框架).
Stars: ✭ 10,146 (+4532.88%)
Mutual labels:  mvp, butterknife
Mvpframes
整合大量主流开源项目并且可高度配置化的 Android MVP 快速集成框架,支持 AndroidX
Stars: ✭ 100 (-54.34%)
Mutual labels:  mvp, butterknife
Androidstarter
A sample Android app using the MVP architecture.
Stars: ✭ 140 (-36.07%)
Mutual labels:  mvp, butterknife
Android Mvp Dagger2 Flytranslate
MVP+RxJava+Retrofit+Dagger2, FlyTranslate是基于MVP开发的Android应用程序的通用架构集成了许多开源项目如Dagger2,RxJava,Retrofit ,使您的开发更快捷,更轻松。
Stars: ✭ 188 (-14.16%)
Mutual labels:  mvp
Slick
A Reactive MVP Framework which is Slick to use
Stars: ✭ 201 (-8.22%)
Mutual labels:  mvp
Androidgeek
"Android Geek(Android极客)"一个专门为Android程序猿打造的极客应用。主要包括: 干货笔记、GitHub Trending、密码管理 .......
Stars: ✭ 187 (-14.61%)
Mutual labels:  mvp
Cookman
一款菜谱查询工具Android APP
Stars: ✭ 186 (-15.07%)
Mutual labels:  mvp
Minimalistweather
Android 平台开源天气 App,采用 MVP、RxJava、Retrofit2、OKHttp3、Dagger2、RetroLambda 等开源库来实现。
Stars: ✭ 2,411 (+1000.91%)
Mutual labels:  mvp
Daily Dozen Android
Keep track of the foods that Dr. Greger recommends in his NYT's best-selling book, How Not to Die with this Android app
Stars: ✭ 200 (-8.68%)
Mutual labels:  butterknife

Android Dagger ButterKnife MVP

This project is part of a 3-part series about how to build Android applications using Dagger 2 (2.11-2.17) with the Dagger Android extension, Dagger Android support extension, Butterknife (8.7-8.8), and Model-View-Presenter (MVP) pattern with support for @Singleton, @PerActivity, @PerFragment, and @PerChildFragment scopes.

A Larger Project

This project is a smaller, derivative of a larger project. One of the main purpose of this project is to showcase / walkthrough a specific portion of the larger project's architecture. Take a look at the following larger project for a more real-world example on how to apply Dagger Android (2.11-2.17), Butterknife (8.7-8.8), Clean Architecture, MVP, MVVM, Kotlin, Java Swing, RxJava, RxAndroid, Retrofit 2, Jackson, AutoValue, Yelp Fusion (v3) REST API, Google Maps API, monolithic repo project management with Gradle, JUNit 4, AssertJ, Mockito 2, Robolectric 3, Espresso 2, and Java best practices and design patterns.

https://github.com/vestrel00/business-search-app-java

Supported Versions

This project now uses Android Studio 3.2.0-rc02. Previous versions of Android Studio (2.4/2.3.3 and below) will no longer be able to build this project.

The following major Dagger 2 and Butterknife versions works with this project;

  • Dagger 2: 2.11, 2.12, 2.13, 2.14, 2.15, 2.16, 2.17
  • Butterknife: 8.7, 8.8

Branches

There are 4 main branches:

  1. master Build Status
  • Uses regular Activity and Fragment classes with a minSdkVersion of 17.
  1. master-support Build Status
  • Uses AppCompatActivity and support Fragment classes with a minSdkVersion of 14.
  • This branch is an extension of the master branch, containing all changes from master.
  • Take a look at PR #49 for the main diff from the master branch.
  1. master-kotlin Build Status
  • Same as master except written in Kotlin.
  • This branch is an extension of the master branch, containing all changes from master, which is then translated to Kotlin.
  • Take a look at PR #67 for the main Java -> Kotlin translation of the master branch.
  1. master-support-kotlin Build Status
  • Same as master-support except written in Kotlin.
  • This branch is an extension of the master-support branch, containing all changes from master-support, which is then translated to Kotlin.
  • Take a look at PR #68 for the main Java -> Kotlin translation of the master-support branch.

Why is the minSdkVersion of the non-support setup in master 17? Can it be lower?

There are 2 main reasons why the minSdkVersion of the non-support setup can only be as low as 17.

  1. https://github.com/vestrel00/android-dagger-butterknife-mvp/pull/20/files#r133777223
  2. https://github.com/vestrel00/android-dagger-butterknife-mvp/pull/29/files#r133777242

Thus, the lowest minSdkVersion supported for the non-support setup in master is 17. It cannot be lower.

What about the minSdkVersion of the support setup in master-support? Can it be lower than 14?

No. The dagger.android.support API only supports minSdkVersion as low as 14.

Notice

  1. As of API 28, fragments and all related fragment code have been deprecated in favor of the support fragments in the support lib. Therefore, it is recommended that the master-support and master-support-kotlin be used as reference instead of the master and master-kotlin branches. See issue #86.

Examples

This demonstrates dagger.android, Butterknife, and MVP setup using 5 examples:

  1. Activity with 1 Fragment.
  2. Activity with 2 Fragments.
  3. Activity with 1 Fragment with 1 child Fragment.
  4. The Fragment in example 1 as a floating dialog.
  5. The Fragments in example 3 as a floating dialog.

A Quick Gist

For a quick overview of dagger-android 2.11 usage with support for @Singleton, @PerActivity, @PerFragment, and @PerChildFragment scopes, take a look at this gist.

Read the walkthrough for the complete guide with proper step-by-step setup and explanations.

Walkthrough

Read the blogs for a complete walkthrough of this app:

  1. Creating a project, from scratch, using the new Dagger.Android (2.11-2.17) dependency injection framework with support for @Singleton, @PerActivity , @PerFragment, and @PerChildFragment scopes. ARTICLE
  2. Using Butterknife (8.7-8.8) to replace a lot of handwritten boilerplate view binding code. ARTICLE
  3. Restructuring the code to Model-View-Presenter (MVP) to increase testability, maintainability, and scalability. ARTICLE

If you don't like reading blogs or are just too "pro" and would like to just explore the repository, you may want to look at the issues instead;

License

Copyright 2018 Vandolf Estrellado

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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].