├── JunitExample
├── app
│ ├── .gitignore
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ ├── values
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── values-w820dp
│ │ │ │ │ └── dimens.xml
│ │ │ │ └── layout
│ │ │ │ │ └── activity_login.xml
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── tetraandroid
│ │ │ │ │ └── junitexample
│ │ │ │ │ ├── login
│ │ │ │ │ ├── LoginRepository.java
│ │ │ │ │ ├── LoginModel.java
│ │ │ │ │ ├── LoginModule.java
│ │ │ │ │ ├── MemoryRepository.java
│ │ │ │ │ ├── User.java
│ │ │ │ │ ├── LoginActivityMVP.java
│ │ │ │ │ └── LoginActivityPresenter.java
│ │ │ │ │ └── root
│ │ │ │ │ ├── ApplicationComponent.java
│ │ │ │ │ ├── ApplicationModule.java
│ │ │ │ │ └── App.java
│ │ │ └── AndroidManifest.xml
│ │ ├── test
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── tetraandroid
│ │ │ │ └── junitexample
│ │ │ │ └── ExampleUnitTest.java
│ │ └── androidTest
│ │ │ └── java
│ │ │ └── com
│ │ │ └── tetraandroid
│ │ │ └── junitexample
│ │ │ └── ExampleInstrumentedTest.java
│ ├── proguard-rules.pro
│ └── build.gradle
├── settings.gradle
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── .gitignore
├── build.gradle
├── gradle.properties
└── gradlew.bat
├── MvpExample
├── app
│ ├── .gitignore
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ ├── values
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── values-w820dp
│ │ │ │ │ └── dimens.xml
│ │ │ │ └── layout
│ │ │ │ │ └── activity_login.xml
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── renegens
│ │ │ │ │ └── mvpexample
│ │ │ │ │ ├── login
│ │ │ │ │ ├── LoginRepository.java
│ │ │ │ │ ├── LoginModel.java
│ │ │ │ │ ├── User.java
│ │ │ │ │ ├── MemoryRepository.java
│ │ │ │ │ ├── LoginModule.java
│ │ │ │ │ ├── LoginActivityMVP.java
│ │ │ │ │ ├── LoginActivityPresenter.java
│ │ │ │ │ └── LoginActivity.java
│ │ │ │ │ └── root
│ │ │ │ │ ├── ApplicationComponent.java
│ │ │ │ │ ├── ApplicationModule.java
│ │ │ │ │ └── App.java
│ │ │ └── AndroidManifest.xml
│ │ ├── androidTest
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── renegens
│ │ │ │ └── mvpexample
│ │ │ │ └── ExampleInstrumentedTest.java
│ │ └── test
│ │ │ └── java
│ │ │ └── com
│ │ │ └── renegens
│ │ │ └── mvpexample
│ │ │ └── PresenterTests.java
│ ├── proguard-rules.pro
│ └── build.gradle
├── settings.gradle
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── .gitignore
├── build.gradle
├── gradle.properties
└── gradlew.bat
├── DaggerExample
├── app
│ ├── .gitignore
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ ├── values
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── values-w820dp
│ │ │ │ │ └── dimens.xml
│ │ │ │ └── layout
│ │ │ │ │ └── activity_main.xml
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── renegens
│ │ │ │ │ └── daggerexample
│ │ │ │ │ ├── ApplicationComponent.java
│ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ ├── ApplicationModule.java
│ │ │ │ │ └── App.java
│ │ │ └── AndroidManifest.xml
│ │ ├── test
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── renegens
│ │ │ │ └── daggerexample
│ │ │ │ └── ExampleUnitTest.java
│ │ └── androidTest
│ │ │ └── java
│ │ │ └── com
│ │ │ └── renegens
│ │ │ └── daggerexample
│ │ │ └── ExampleInstrumentedTest.java
│ ├── proguard-rules.pro
│ └── build.gradle
├── settings.gradle
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── .gitignore
├── build.gradle
├── gradle.properties
└── gradlew.bat
├── DiffUtilExample
├── app
│ ├── .gitignore
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ ├── values
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── drawable
│ │ │ │ │ └── recyclerview_divider_normal.xml
│ │ │ │ ├── values-w820dp
│ │ │ │ │ └── dimens.xml
│ │ │ │ └── layout
│ │ │ │ │ ├── movie_list_row.xml
│ │ │ │ │ └── topmovies_activity.xml
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── tetraandroid
│ │ │ │ │ └── diffutilexample
│ │ │ │ │ ├── http
│ │ │ │ │ ├── MovieApiService.java
│ │ │ │ │ ├── apimodel
│ │ │ │ │ │ ├── TopRated.java
│ │ │ │ │ │ └── Result.java
│ │ │ │ │ └── ApiModuleForName.java
│ │ │ │ │ ├── topmovies
│ │ │ │ │ ├── TopMoviesModule.java
│ │ │ │ │ ├── TopMoviesActivityMVP.java
│ │ │ │ │ ├── ListAdapter.java
│ │ │ │ │ └── TopMoviesPresenter.java
│ │ │ │ │ ├── root
│ │ │ │ │ ├── App.java
│ │ │ │ │ ├── ApplicationModule.java
│ │ │ │ │ └── ApplicationComponent.java
│ │ │ │ │ └── helper
│ │ │ │ │ ├── MyDiffUtil.java
│ │ │ │ │ └── DividerItemDecoration.java
│ │ │ └── AndroidManifest.xml
│ │ ├── test
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── tetraandroid
│ │ │ │ └── retrofitexample
│ │ │ │ └── ExampleUnitTest.java
│ │ └── androidTest
│ │ │ └── java
│ │ │ └── com
│ │ │ └── tetraandroid
│ │ │ └── retrofitexample
│ │ │ └── ExampleInstrumentedTest.java
│ ├── proguard-rules.pro
│ └── build.gradle
├── settings.gradle
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── .gitignore
├── build.gradle
├── gradle.properties
└── gradlew.bat
├── FinalappExample
├── app
│ ├── .gitignore
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ ├── values
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── drawable
│ │ │ │ │ └── recyclerview_divider_normal.xml
│ │ │ │ ├── values-w820dp
│ │ │ │ │ └── dimens.xml
│ │ │ │ └── layout
│ │ │ │ │ ├── topmovies_activity.xml
│ │ │ │ │ └── movie_list_row.xml
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── tetraandroid
│ │ │ │ │ └── finalappexample
│ │ │ │ │ ├── http
│ │ │ │ │ ├── MoreInfoApiService.java
│ │ │ │ │ ├── MovieApiService.java
│ │ │ │ │ ├── apimodel
│ │ │ │ │ │ ├── TopRated.java
│ │ │ │ │ │ └── Result.java
│ │ │ │ │ ├── ApiModuleForInfo.java
│ │ │ │ │ └── ApiModuleForName.java
│ │ │ │ │ ├── topmovies
│ │ │ │ │ ├── Repository.java
│ │ │ │ │ ├── TopMoviesActivityMVP.java
│ │ │ │ │ ├── ViewModel.java
│ │ │ │ │ ├── TopMoviesModel.java
│ │ │ │ │ ├── TopMoviesModule.java
│ │ │ │ │ ├── DividerItemDecoration.java
│ │ │ │ │ ├── ListAdapter.java
│ │ │ │ │ ├── TopMoviesPresenter.java
│ │ │ │ │ └── TopMoviesActivity.java
│ │ │ │ │ └── root
│ │ │ │ │ ├── ApplicationModule.java
│ │ │ │ │ ├── ApplicationComponent.java
│ │ │ │ │ └── App.java
│ │ │ └── AndroidManifest.xml
│ │ ├── test
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── tetraandroid
│ │ │ │ └── retrofitexample
│ │ │ │ └── ExampleUnitTest.java
│ │ └── androidTest
│ │ │ └── java
│ │ │ └── com
│ │ │ └── tetraandroid
│ │ │ └── retrofitexample
│ │ │ └── ExampleInstrumentedTest.java
│ ├── proguard-rules.pro
│ └── build.gradle
├── settings.gradle
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── .gitignore
├── build.gradle
├── gradle.properties
└── gradlew.bat
├── LambdaExample
├── app
│ ├── .gitignore
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── values
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── values-w820dp
│ │ │ │ │ └── dimens.xml
│ │ │ │ ├── menu
│ │ │ │ │ └── menu_main.xml
│ │ │ │ └── layout
│ │ │ │ │ └── activity_main.xml
│ │ │ ├── AndroidManifest.xml
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── tetraandroid
│ │ │ │ └── lambdaexample
│ │ │ │ └── MainActivity.java
│ │ ├── test
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── tetraandroid
│ │ │ │ └── lambdaexample
│ │ │ │ └── ExampleUnitTest.java
│ │ └── androidTest
│ │ │ └── java
│ │ │ └── com
│ │ │ └── tetraandroid
│ │ │ └── lambdaexample
│ │ │ └── ExampleInstrumentedTest.java
│ ├── proguard-rules.pro
│ └── build.gradle
├── settings.gradle
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── .gitignore
├── build.gradle
├── gradle.properties
└── gradlew.bat
├── RetrofitExample
├── app
│ ├── .gitignore
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ ├── values
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── values-w820dp
│ │ │ │ │ └── dimens.xml
│ │ │ │ └── layout
│ │ │ │ │ └── activity_main.xml
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── tetraandroid
│ │ │ │ │ └── retrofitexample
│ │ │ │ │ ├── http
│ │ │ │ │ ├── TwitchAPI.java
│ │ │ │ │ ├── apimodel
│ │ │ │ │ │ ├── Twitch.java
│ │ │ │ │ │ ├── Top.java
│ │ │ │ │ │ ├── Box.java
│ │ │ │ │ │ ├── Logo.java
│ │ │ │ │ │ └── Game.java
│ │ │ │ │ └── ApiModule.java
│ │ │ │ │ ├── root
│ │ │ │ │ ├── ApplicationComponent.java
│ │ │ │ │ ├── ApplicationModule.java
│ │ │ │ │ └── App.java
│ │ │ │ │ └── MainActivity.java
│ │ │ └── AndroidManifest.xml
│ │ ├── test
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── tetraandroid
│ │ │ │ └── retrofitexample
│ │ │ │ └── ExampleUnitTest.java
│ │ └── androidTest
│ │ │ └── java
│ │ │ └── com
│ │ │ └── tetraandroid
│ │ │ └── retrofitexample
│ │ │ └── ExampleInstrumentedTest.java
│ ├── proguard-rules.pro
│ └── build.gradle
├── settings.gradle
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── .gitignore
├── build.gradle
├── gradle.properties
└── gradlew.bat
├── RxJavaExample
├── app
│ ├── .gitignore
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ ├── values
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── values-w820dp
│ │ │ │ │ └── dimens.xml
│ │ │ │ └── layout
│ │ │ │ │ └── activity_main.xml
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── tetraandroid
│ │ │ │ │ └── rxjavaexample
│ │ │ │ │ ├── http
│ │ │ │ │ ├── apimodel
│ │ │ │ │ │ ├── Links_.java
│ │ │ │ │ │ ├── Links.java
│ │ │ │ │ │ ├── Top.java
│ │ │ │ │ │ ├── Twitch.java
│ │ │ │ │ │ ├── Logo.java
│ │ │ │ │ │ └── Box.java
│ │ │ │ │ ├── TwitchAPI.java
│ │ │ │ │ └── ApiModule.java
│ │ │ │ │ └── root
│ │ │ │ │ ├── ApplicationComponent.java
│ │ │ │ │ ├── ApplicationModule.java
│ │ │ │ │ └── App.java
│ │ │ └── AndroidManifest.xml
│ │ ├── test
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── tetraandroid
│ │ │ │ └── retrofitexample
│ │ │ │ └── ExampleUnitTest.java
│ │ └── androidTest
│ │ │ └── java
│ │ │ └── com
│ │ │ └── tetraandroid
│ │ │ └── retrofitexample
│ │ │ └── ExampleInstrumentedTest.java
│ ├── proguard-rules.pro
│ └── build.gradle
├── settings.gradle
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── .gitignore
├── build.gradle
└── gradle.properties
├── README.md
└── .gitignore
/JunitExample/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/MvpExample/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/DaggerExample/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/FinalappExample/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/LambdaExample/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/RetrofitExample/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/RxJavaExample/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/DaggerExample/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/JunitExample/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/LambdaExample/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/MvpExample/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # clean-android
2 | clean-android
3 |
--------------------------------------------------------------------------------
/RxJavaExample/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/DiffUtilExample/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/FinalappExample/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/RetrofitExample/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | JunitExample
3 |
4 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | MvpExample
3 |
4 |
--------------------------------------------------------------------------------
/DaggerExample/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | DaggerExample
3 |
4 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | RetrofitExample
3 |
4 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | DiffUtilExample
3 |
4 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | FinalAppExample
3 |
4 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | RetrofitExample
3 |
4 |
--------------------------------------------------------------------------------
/MvpExample/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/MvpExample/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/DaggerExample/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/DaggerExample/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/JunitExample/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/JunitExample/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/LambdaExample/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/LambdaExample/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/RxJavaExample/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/RxJavaExample/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/DiffUtilExample/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/DiffUtilExample/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/FinalappExample/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/FinalappExample/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/RetrofitExample/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/RetrofitExample/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/JunitExample/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/JunitExample/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/JunitExample/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/JunitExample/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/MvpExample/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/MvpExample/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/MvpExample/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/MvpExample/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/MvpExample/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/MvpExample/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/MvpExample/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/MvpExample/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/DaggerExample/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/DaggerExample/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/DaggerExample/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/DaggerExample/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/DaggerExample/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/DaggerExample/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/JunitExample/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/JunitExample/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/JunitExample/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/JunitExample/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/LambdaExample/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/LambdaExample/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/LambdaExample/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/LambdaExample/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/LambdaExample/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/LambdaExample/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/MvpExample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/MvpExample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/RxJavaExample/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/RxJavaExample/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/RxJavaExample/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/DaggerExample/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/DaggerExample/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/DaggerExample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/DaggerExample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/DiffUtilExample/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/DiffUtilExample/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/DiffUtilExample/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/DiffUtilExample/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/FinalappExample/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/FinalappExample/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/FinalappExample/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/FinalappExample/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/JunitExample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/JunitExample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/LambdaExample/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/LambdaExample/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/LambdaExample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/LambdaExample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/RetrofitExample/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/RetrofitExample/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/RetrofitExample/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/RetrofitExample/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/RxJavaExample/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/RxJavaExample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/DiffUtilExample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/FinalappExample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/LambdaExample/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Lambda Example
3 | Settings
4 |
5 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TetraTutorials/clean-android/HEAD/RetrofitExample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/JunitExample/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 | .idea
11 |
--------------------------------------------------------------------------------
/MvpExample/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 | .idea
11 |
--------------------------------------------------------------------------------
/DaggerExample/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 | .idea
11 |
--------------------------------------------------------------------------------
/DiffUtilExample/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 | .idea
11 |
--------------------------------------------------------------------------------
/FinalappExample/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 | .idea
11 |
--------------------------------------------------------------------------------
/LambdaExample/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 | .idea
11 |
--------------------------------------------------------------------------------
/RetrofitExample/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 | .idea
11 |
--------------------------------------------------------------------------------
/RxJavaExample/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 | .idea
11 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/java/com/renegens/mvpexample/login/LoginRepository.java:
--------------------------------------------------------------------------------
1 | package com.renegens.mvpexample.login;
2 |
3 | public interface LoginRepository {
4 |
5 | User getUser();
6 |
7 | void saveUser(User user);
8 | }
9 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/java/com/tetraandroid/junitexample/login/LoginRepository.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.junitexample.login;
2 |
3 | public interface LoginRepository {
4 |
5 | User getUser();
6 |
7 | void saveUser(User user);
8 | }
9 |
--------------------------------------------------------------------------------
/DaggerExample/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/DaggerExample/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/LambdaExample/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/java/com/tetraandroid/rxjavaexample/http/apimodel/Links_.java:
--------------------------------------------------------------------------------
1 |
2 | package com.tetraandroid.rxjavaexample.http.apimodel;
3 |
4 | import javax.annotation.Generated;
5 |
6 | @Generated("org.jsonschema2pojo")
7 | public class Links_ {
8 |
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/DaggerExample/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Nov 10 15:52:05 EET 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
7 |
--------------------------------------------------------------------------------
/MvpExample/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Dec 10 12:28:29 EET 2016
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
7 |
--------------------------------------------------------------------------------
/DiffUtilExample/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sun Apr 15 18:59:36 EEST 2018
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
7 |
--------------------------------------------------------------------------------
/FinalappExample/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sun Apr 15 18:59:36 EEST 2018
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
7 |
--------------------------------------------------------------------------------
/JunitExample/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Dec 10 12:26:41 EET 2016
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
7 |
--------------------------------------------------------------------------------
/LambdaExample/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Mon Apr 16 21:16:19 EEST 2018
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
7 |
--------------------------------------------------------------------------------
/RetrofitExample/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Mon Jun 12 17:25:56 EEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
7 |
--------------------------------------------------------------------------------
/RxJavaExample/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Dec 10 12:35:20 EET 2016
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
7 |
--------------------------------------------------------------------------------
/LambdaExample/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 | 16dp
6 |
7 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/res/drawable/recyclerview_divider_normal.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/res/drawable/recyclerview_divider_normal.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/DaggerExample/app/src/main/java/com/renegens/daggerexample/ApplicationComponent.java:
--------------------------------------------------------------------------------
1 | package com.renegens.daggerexample;
2 |
3 | import javax.inject.Singleton;
4 |
5 | import dagger.Component;
6 |
7 | @Singleton
8 | @Component(modules = {ApplicationModule.class})
9 | public interface ApplicationComponent {
10 |
11 | void inject (MainActivity target);
12 | }
13 |
--------------------------------------------------------------------------------
/DaggerExample/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/LambdaExample/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/DaggerExample/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/LambdaExample/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/http/MoreInfoApiService.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.http;
2 |
3 | import com.tetraandroid.finalappexample.http.apimodel.OmdbApi;
4 |
5 | import io.reactivex.Observable;
6 | import retrofit2.http.GET;
7 | import retrofit2.http.Query;
8 |
9 | public interface MoreInfoApiService {
10 |
11 | @GET("/")
12 | Observable getCountry(@Query("t") String title);
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/LambdaExample/app/src/main/res/menu/menu_main.xml:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/java/com/tetraandroid/retrofitexample/http/TwitchAPI.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample.http;
2 |
3 | import com.tetraandroid.retrofitexample.http.apimodel.Twitch;
4 |
5 | import retrofit2.Call;
6 | import retrofit2.http.GET;
7 | import retrofit2.http.Header;
8 |
9 | public interface TwitchAPI {
10 |
11 | @GET("games/top")
12 | Call getTopGames(@Header("Client-Id") String clientId);
13 |
14 |
15 |
16 |
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/java/com/tetraandroid/diffutilexample/http/MovieApiService.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.diffutilexample.http;
2 |
3 | import com.tetraandroid.diffutilexample.http.apimodel.TopRated;
4 |
5 | import io.reactivex.Observable;
6 | import retrofit2.http.GET;
7 | import retrofit2.http.Query;
8 |
9 | public interface MovieApiService {
10 |
11 | @GET("top_rated")
12 | Observable getTopRatedMovies(@Query("page") Integer page);
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/http/MovieApiService.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.http;
2 |
3 | import com.tetraandroid.finalappexample.http.apimodel.TopRated;
4 |
5 | import io.reactivex.Observable;
6 | import retrofit2.http.GET;
7 | import retrofit2.http.Query;
8 |
9 | public interface MovieApiService {
10 |
11 | @GET("top_rated")
12 | Observable getTopRatedMovies(@Query("page") Integer page);
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/java/com/renegens/mvpexample/root/ApplicationComponent.java:
--------------------------------------------------------------------------------
1 | package com.renegens.mvpexample.root;
2 |
3 | import com.renegens.mvpexample.login.LoginActivity;
4 | import com.renegens.mvpexample.login.LoginModule;
5 |
6 | import javax.inject.Singleton;
7 |
8 | import dagger.Component;
9 |
10 | @Singleton
11 | @Component(modules = {ApplicationModule.class, LoginModule.class})
12 | public interface ApplicationComponent {
13 |
14 | void inject(LoginActivity target);
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/java/com/tetraandroid/rxjavaexample/root/ApplicationComponent.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.rxjavaexample.root;
2 |
3 | import com.tetraandroid.rxjavaexample.MainActivity;
4 | import com.tetraandroid.rxjavaexample.http.ApiModule;
5 |
6 | import javax.inject.Singleton;
7 |
8 | import dagger.Component;
9 |
10 | @Singleton
11 | @Component(modules = {ApplicationModule.class, ApiModule.class})
12 | public interface ApplicationComponent {
13 |
14 | void inject(MainActivity target);
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/java/com/tetraandroid/retrofitexample/root/ApplicationComponent.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample.root;
2 |
3 | import com.tetraandroid.retrofitexample.MainActivity;
4 | import com.tetraandroid.retrofitexample.http.ApiModule;
5 |
6 | import javax.inject.Singleton;
7 |
8 | import dagger.Component;
9 |
10 | @Singleton
11 | @Component(modules = {ApplicationModule.class, ApiModule.class})
12 | public interface ApplicationComponent {
13 |
14 | void inject(MainActivity target);
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/DaggerExample/app/src/test/java/com/renegens/daggerexample/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.renegens.daggerexample;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/java/com/tetraandroid/diffutilexample/topmovies/TopMoviesModule.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.diffutilexample.topmovies;
2 |
3 | import com.tetraandroid.diffutilexample.http.MovieApiService;
4 |
5 | import dagger.Module;
6 | import dagger.Provides;
7 |
8 | @Module
9 | public class TopMoviesModule {
10 |
11 | @Provides
12 | public TopMoviesActivityMVP.Presenter provideTopMoviesActivityPresenter(MovieApiService movieApiService) {
13 | return new TopMoviesPresenter(movieApiService);
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/JunitExample/app/src/test/java/com/tetraandroid/junitexample/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.junitexample;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/test/java/com/tetraandroid/retrofitexample/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/test/java/com/tetraandroid/retrofitexample/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/test/java/com/tetraandroid/retrofitexample/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/LambdaExample/app/src/test/java/com/tetraandroid/lambdaexample/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.lambdaexample;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.assertEquals;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/test/java/com/tetraandroid/retrofitexample/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.assertEquals;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/java/com/tetraandroid/junitexample/root/ApplicationComponent.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.junitexamplev.root;
2 |
3 | import com.tetraandroid.junitexample.login.LoginActivity;
4 | import com.tetraandroid.junitexample.login.LoginModule;
5 | import com.tetraandroid.junitexample.root.ApplicationModule;
6 |
7 | import javax.inject.Singleton;
8 |
9 | import dagger.Component;
10 |
11 | @Singleton
12 | @Component(modules = {ApplicationModule.class, LoginModule.class})
13 | public interface ApplicationComponent {
14 |
15 | void inject(LoginActivity target);
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/MvpExample/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:2.2.3'
9 |
10 | // NOTE: Do not place your application dependencies here; they belong
11 | // in the individual module build.gradle files
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | jcenter()
18 | }
19 | }
20 |
21 | task clean(type: Delete) {
22 | delete rootProject.buildDir
23 | }
24 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/java/com/tetraandroid/rxjavaexample/http/TwitchAPI.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.rxjavaexample.http;
2 |
3 | import com.tetraandroid.rxjavaexample.http.apimodel.Twitch;
4 |
5 | import retrofit2.Call;
6 | import retrofit2.http.GET;
7 | import retrofit2.http.Header;
8 | import rx.Observable;
9 |
10 | public interface TwitchAPI {
11 |
12 | @GET("games/top")
13 | Call getTopGames(@Header("Client-Id") String clientId);
14 |
15 | @GET("games/top")
16 | Observable getTopGamesObservable(@Header("Client-Id") String clientId);
17 |
18 |
19 |
20 |
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/DaggerExample/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:3.0.0'
9 |
10 | // NOTE: Do not place your application dependencies here; they belong
11 | // in the individual module build.gradle files
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | jcenter()
18 | }
19 | }
20 |
21 | task clean(type: Delete) {
22 | delete rootProject.buildDir
23 | }
24 |
--------------------------------------------------------------------------------
/JunitExample/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:2.2.3'
9 |
10 | // NOTE: Do not place your application dependencies here; they belong
11 | // in the individual module build.gradle files
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | jcenter()
18 | }
19 | }
20 |
21 | task clean(type: Delete) {
22 | delete rootProject.buildDir
23 | }
24 |
--------------------------------------------------------------------------------
/RetrofitExample/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:2.3.3'
9 |
10 | // NOTE: Do not place your application dependencies here; they belong
11 | // in the individual module build.gradle files
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | jcenter()
18 | }
19 | }
20 |
21 | task clean(type: Delete) {
22 | delete rootProject.buildDir
23 | }
24 |
--------------------------------------------------------------------------------
/RxJavaExample/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:2.2.3'
9 |
10 | // NOTE: Do not place your application dependencies here; they belong
11 | // in the individual module build.gradle files
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | jcenter()
18 | }
19 | }
20 |
21 | task clean(type: Delete) {
22 | delete rootProject.buildDir
23 | }
24 |
--------------------------------------------------------------------------------
/LambdaExample/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/java/com/tetraandroid/diffutilexample/root/App.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.diffutilexample.root;
2 |
3 | import android.app.Application;
4 |
5 | public class App extends Application {
6 |
7 | private ApplicationComponent component;
8 |
9 | @Override
10 | public void onCreate() {
11 | super.onCreate();
12 |
13 | component = DaggerApplicationComponent.builder()
14 | .applicationModule(new ApplicationModule(this))
15 | .build();
16 | }
17 |
18 | public ApplicationComponent getComponent() {
19 | return component;
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/topmovies/Repository.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.topmovies;
2 |
3 | import com.tetraandroid.finalappexample.http.apimodel.Result;
4 |
5 | import io.reactivex.Observable;
6 |
7 |
8 | public interface Repository {
9 |
10 | Observable getResultsFromMemory();
11 |
12 | Observable getResultsFromNetwork();
13 |
14 | Observable getCountriesFromMemory();
15 |
16 | Observable getCountriesFromNetwork();
17 |
18 | Observable getCountryData();
19 |
20 | Observable getResultData();
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/java/com/renegens/mvpexample/login/LoginModel.java:
--------------------------------------------------------------------------------
1 | package com.renegens.mvpexample.login;
2 |
3 | public class LoginModel implements LoginActivityMVP.Model {
4 |
5 |
6 | private LoginRepository repository;
7 |
8 | public LoginModel(LoginRepository repository) {
9 | this.repository = repository;
10 | }
11 |
12 | @Override
13 | public void createUser(String name, String lastName) {
14 |
15 |
16 | repository.saveUser(new User(name, lastName));
17 |
18 |
19 | }
20 |
21 | @Override
22 | public User getUser() {
23 |
24 | return repository.getUser();
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Built application files
2 | *.apk
3 | *.ap_
4 |
5 | # Files for the ART/Dalvik VM
6 | *.dex
7 |
8 | # Java class files
9 | *.class
10 |
11 | # Generated files
12 | bin/
13 | gen/
14 | out/
15 |
16 | # Gradle files
17 | .gradle/
18 | build/
19 |
20 | # Local configuration file (sdk path, etc)
21 | local.properties
22 |
23 | # Proguard folder generated by Eclipse
24 | proguard/
25 |
26 | # Log Files
27 | *.log
28 |
29 | # Android Studio Navigation editor temp files
30 | .navigation/
31 |
32 | # Android Studio captures folder
33 | captures/
34 |
35 | # Intellij
36 | *.iml
37 | .idea/workspace.xml
38 |
39 | # Keystore files
40 | *.jks
41 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/java/com/renegens/mvpexample/login/User.java:
--------------------------------------------------------------------------------
1 | package com.renegens.mvpexample.login;
2 |
3 | public class User {
4 |
5 | private int id;
6 | private String firstName;
7 | private String lastName;
8 |
9 | public User(String firstName, String lastName) {
10 | this.firstName = firstName;
11 | this.lastName = lastName;
12 | }
13 |
14 |
15 | public void setId(int id) {
16 | this.id = id;
17 | }
18 |
19 | public String getFirstName() {
20 | return firstName;
21 | }
22 |
23 |
24 | public String getLastName() {
25 | return lastName;
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/DiffUtilExample/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | google()
7 | }
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:3.1.3'
10 |
11 | // NOTE: Do not place your application dependencies here; they belong
12 | // in the individual module build.gradle files
13 | }
14 | }
15 |
16 | allprojects {
17 | repositories {
18 | jcenter()
19 | google()
20 | }
21 | }
22 |
23 | task clean(type: Delete) {
24 | delete rootProject.buildDir
25 | }
26 |
--------------------------------------------------------------------------------
/FinalappExample/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | google()
7 | }
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:3.1.1'
10 |
11 | // NOTE: Do not place your application dependencies here; they belong
12 | // in the individual module build.gradle files
13 | }
14 | }
15 |
16 | allprojects {
17 | repositories {
18 | jcenter()
19 | google()
20 | }
21 | }
22 |
23 | task clean(type: Delete) {
24 | delete rootProject.buildDir
25 | }
26 |
--------------------------------------------------------------------------------
/LambdaExample/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | google()
7 | }
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:3.1.1'
10 |
11 | // NOTE: Do not place your application dependencies here; they belong
12 | // in the individual module build.gradle files
13 | }
14 | }
15 |
16 | allprojects {
17 | repositories {
18 | jcenter()
19 | google()
20 | }
21 | }
22 |
23 | task clean(type: Delete) {
24 | delete rootProject.buildDir
25 | }
26 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/java/com/renegens/mvpexample/root/ApplicationModule.java:
--------------------------------------------------------------------------------
1 | package com.renegens.mvpexample.root;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 |
6 | import javax.inject.Singleton;
7 |
8 | import dagger.Module;
9 | import dagger.Provides;
10 |
11 | @Module
12 | public class ApplicationModule {
13 |
14 | private Application application;
15 |
16 | public ApplicationModule(Application application) {
17 | this.application = application;
18 | }
19 |
20 | @Provides
21 | @Singleton
22 | public Context provideContext() {
23 | return application;
24 | }
25 |
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/DaggerExample/app/src/main/java/com/renegens/daggerexample/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.renegens.daggerexample;
2 |
3 | import android.content.Context;
4 | import android.os.Bundle;
5 | import android.support.v7.app.AppCompatActivity;
6 |
7 | import javax.inject.Inject;
8 |
9 | public class MainActivity extends AppCompatActivity {
10 |
11 | @Inject
12 | Context context;
13 |
14 | @Override
15 | protected void onCreate(Bundle savedInstanceState) {
16 | super.onCreate(savedInstanceState);
17 | setContentView(R.layout.activity_main);
18 |
19 | ((App) getApplication()).getComponent().inject(this);
20 |
21 |
22 |
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/java/com/tetraandroid/junitexample/root/ApplicationModule.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.junitexample.root;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 |
6 | import javax.inject.Singleton;
7 |
8 | import dagger.Module;
9 | import dagger.Provides;
10 |
11 | @Module
12 | public class ApplicationModule {
13 |
14 | private Application application;
15 |
16 | public ApplicationModule(Application application) {
17 | this.application = application;
18 | }
19 |
20 | @Provides
21 | @Singleton
22 | public Context provideContext() {
23 | return application;
24 | }
25 |
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/java/com/tetraandroid/rxjavaexample/root/ApplicationModule.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.rxjavaexample.root;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 |
6 | import javax.inject.Singleton;
7 |
8 | import dagger.Module;
9 | import dagger.Provides;
10 |
11 | @Module
12 | public class ApplicationModule {
13 |
14 | private Application application;
15 |
16 | public ApplicationModule(Application application) {
17 | this.application = application;
18 | }
19 |
20 | @Provides
21 | @Singleton
22 | public Context provideContext() {
23 | return application;
24 | }
25 |
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/java/com/tetraandroid/diffutilexample/root/ApplicationModule.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.diffutilexample.root;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 |
6 | import javax.inject.Singleton;
7 |
8 | import dagger.Module;
9 | import dagger.Provides;
10 |
11 | @Module
12 | public class ApplicationModule {
13 |
14 | private Application application;
15 |
16 | public ApplicationModule(Application application) {
17 | this.application = application;
18 | }
19 |
20 | @Provides
21 | @Singleton
22 | public Context provideContext() {
23 | return application;
24 | }
25 |
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/root/ApplicationModule.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.root;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 |
6 | import javax.inject.Singleton;
7 |
8 | import dagger.Module;
9 | import dagger.Provides;
10 |
11 | @Module
12 | public class ApplicationModule {
13 |
14 | private Application application;
15 |
16 | public ApplicationModule(Application application) {
17 | this.application = application;
18 | }
19 |
20 | @Provides
21 | @Singleton
22 | public Context provideContext() {
23 | return application;
24 | }
25 |
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/java/com/tetraandroid/retrofitexample/root/ApplicationModule.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample.root;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 |
6 | import javax.inject.Singleton;
7 |
8 | import dagger.Module;
9 | import dagger.Provides;
10 |
11 | @Module
12 | public class ApplicationModule {
13 |
14 | private Application application;
15 |
16 | public ApplicationModule(Application application) {
17 | this.application = application;
18 | }
19 |
20 | @Provides
21 | @Singleton
22 | public Context provideContext() {
23 | return application;
24 | }
25 |
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/topmovies/TopMoviesActivityMVP.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.topmovies;
2 |
3 |
4 | import io.reactivex.Observable;
5 |
6 | public interface TopMoviesActivityMVP {
7 |
8 | interface View {
9 |
10 | void updateData(ViewModel viewModel);
11 |
12 | void showSnackbar(String s);
13 |
14 | }
15 |
16 | interface Presenter {
17 |
18 | void loadData();
19 |
20 | void rxUnsubscribe();
21 |
22 | void setView(TopMoviesActivityMVP.View view);
23 |
24 | }
25 |
26 | interface Model {
27 |
28 | Observable result();
29 |
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/java/com/tetraandroid/diffutilexample/root/ApplicationComponent.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.diffutilexample.root;
2 |
3 | import com.tetraandroid.diffutilexample.http.ApiModuleForName;
4 | import com.tetraandroid.diffutilexample.topmovies.TopMoviesActivity;
5 | import com.tetraandroid.diffutilexample.topmovies.TopMoviesModule;
6 |
7 | import javax.inject.Singleton;
8 |
9 | import dagger.Component;
10 |
11 | @Singleton
12 | @Component(modules = {
13 | ApplicationModule.class,
14 | ApiModuleForName.class,
15 | TopMoviesModule.class
16 | })
17 | public interface ApplicationComponent {
18 |
19 | void inject(TopMoviesActivity target);
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/DaggerExample/app/src/main/java/com/renegens/daggerexample/ApplicationModule.java:
--------------------------------------------------------------------------------
1 | package com.renegens.daggerexample;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 |
6 | import javax.inject.Singleton;
7 |
8 | import dagger.Module;
9 | import dagger.Provides;
10 |
11 | /**
12 | * Created by renegens on 25/07/16.
13 | */
14 |
15 | @Module
16 | public class ApplicationModule {
17 |
18 | private Application application;
19 |
20 | public ApplicationModule(Application application) {
21 | this.application = application;
22 | }
23 |
24 | @Provides
25 | @Singleton
26 | public Context provideContext() {
27 | return application;
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/java/com/renegens/mvpexample/login/MemoryRepository.java:
--------------------------------------------------------------------------------
1 | package com.renegens.mvpexample.login;
2 |
3 | public class MemoryRepository implements LoginRepository {
4 |
5 | private User user;
6 |
7 | @Override
8 | public User getUser() {
9 |
10 | if (user == null) {
11 | User user = new User("Fox", "Mulder");
12 | user.setId(0);
13 | return user;
14 | } else {
15 | return user;
16 | }
17 |
18 | }
19 |
20 | @Override
21 | public void saveUser(User user) {
22 |
23 | if (user == null) {
24 | user = getUser();
25 | }
26 |
27 | this.user = user;
28 |
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/java/com/tetraandroid/diffutilexample/topmovies/TopMoviesActivityMVP.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.diffutilexample.topmovies;
2 |
3 |
4 | import com.tetraandroid.diffutilexample.http.apimodel.Result;
5 |
6 | import java.util.List;
7 |
8 |
9 | public interface TopMoviesActivityMVP {
10 |
11 | interface View {
12 |
13 | void updateData(List results);
14 |
15 | void showSnackbar(String s);
16 |
17 | void setLoading(boolean isLoading);
18 |
19 | }
20 |
21 | interface Presenter {
22 |
23 | void loadData();
24 |
25 | void detachView();
26 |
27 | void attachView(TopMoviesActivityMVP.View view);
28 |
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/java/com/tetraandroid/junitexample/login/LoginModel.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.junitexample.login;
2 |
3 | /**
4 | * Created by renegens on 26/07/16.
5 | */
6 |
7 | public class LoginModel implements LoginActivityMVP.Model {
8 |
9 |
10 | private LoginRepository repository;
11 |
12 | public LoginModel(LoginRepository repository) {
13 | this.repository = repository;
14 | }
15 |
16 | @Override
17 | public void createUser(String name, String lastName) {
18 |
19 |
20 | repository.saveUser(new User(name, lastName));
21 |
22 |
23 | }
24 |
25 | @Override
26 | public User getUser() {
27 |
28 | return repository.getUser();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/java/com/renegens/mvpexample/root/App.java:
--------------------------------------------------------------------------------
1 | package com.renegens.mvpexample.root;
2 |
3 | import android.app.Application;
4 |
5 | import com.renegens.mvpexample.login.LoginModule;
6 |
7 | public class App extends Application {
8 |
9 | private ApplicationComponent component;
10 |
11 | @Override
12 | public void onCreate() {
13 | super.onCreate();
14 |
15 | component = DaggerApplicationComponent.builder()
16 | .applicationModule(new ApplicationModule(this))
17 | .loginModule(new LoginModule())
18 | .build();
19 | }
20 |
21 | public ApplicationComponent getComponent() {
22 | return component;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/java/com/renegens/mvpexample/login/LoginModule.java:
--------------------------------------------------------------------------------
1 | package com.renegens.mvpexample.login;
2 |
3 | import dagger.Module;
4 | import dagger.Provides;
5 |
6 |
7 | @Module
8 | public class LoginModule {
9 |
10 | @Provides
11 | public LoginActivityMVP.Presenter provideLoginActivityPresenter(LoginActivityMVP.Model model){
12 | return new LoginActivityPresenter(model);
13 | }
14 |
15 | @Provides
16 | public LoginActivityMVP.Model provideLoginActivityModel(LoginRepository repository){
17 | return new LoginModel(repository);
18 | }
19 |
20 | @Provides
21 | public LoginRepository provideLoginRepository(){
22 | return new MemoryRepository();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/DaggerExample/app/src/main/java/com/renegens/daggerexample/App.java:
--------------------------------------------------------------------------------
1 | package com.renegens.daggerexample;
2 |
3 | import android.app.Application;
4 |
5 | /**
6 | * Created by renegens on 25/07/16.
7 | */
8 |
9 | public class App extends Application {
10 |
11 | private ApplicationComponent component;
12 |
13 | @Override
14 | public void onCreate() {
15 | super.onCreate();
16 |
17 | //needs to run once to generate it
18 | component = DaggerApplicationComponent.builder()
19 | .applicationModule(new ApplicationModule(this))
20 | .build();
21 |
22 | }
23 |
24 |
25 | public ApplicationComponent getComponent() {
26 | return component;
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/topmovies/ViewModel.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.topmovies;
2 |
3 |
4 | public class ViewModel {
5 |
6 | private String country;
7 | private String name;
8 |
9 | public ViewModel(String name, String country) {
10 | this.country = country;
11 | this.name = name;
12 | }
13 |
14 | public String getCountry() {
15 | return country;
16 | }
17 |
18 | public void setCountry(String country) {
19 | this.country = country;
20 | }
21 |
22 | public String getName() {
23 | return name;
24 | }
25 |
26 | public void setName(String name) {
27 | this.name = name;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/java/com/tetraandroid/rxjavaexample/root/App.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.rxjavaexample.root;
2 |
3 | import android.app.Application;
4 |
5 | import com.tetraandroid.rxjavaexample.http.ApiModule;
6 |
7 | public class App extends Application {
8 |
9 | private ApplicationComponent component;
10 |
11 | @Override
12 | public void onCreate() {
13 | super.onCreate();
14 |
15 | component = DaggerApplicationComponent.builder()
16 | .applicationModule(new ApplicationModule(this))
17 | .apiModule(new ApiModule())
18 | .build();
19 | }
20 |
21 | public ApplicationComponent getComponent() {
22 | return component;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/root/ApplicationComponent.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.root;
2 |
3 | import com.tetraandroid.finalappexample.http.ApiModuleForInfo;
4 | import com.tetraandroid.finalappexample.http.ApiModuleForName;
5 | import com.tetraandroid.finalappexample.topmovies.TopMoviesActivity;
6 | import com.tetraandroid.finalappexample.topmovies.TopMoviesModule;
7 |
8 | import javax.inject.Singleton;
9 |
10 | import dagger.Component;
11 |
12 | @Singleton
13 | @Component(modules = {ApplicationModule.class, ApiModuleForName.class, ApiModuleForInfo.class,TopMoviesModule.class})
14 | public interface ApplicationComponent {
15 |
16 | void inject(TopMoviesActivity target);
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/java/com/tetraandroid/junitexample/login/LoginModule.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.junitexample.login;
2 |
3 | import dagger.Module;
4 | import dagger.Provides;
5 |
6 |
7 | @Module
8 | public class LoginModule {
9 |
10 | @Provides
11 | public LoginActivityMVP.Presenter provideLoginActivityPresenter(LoginActivityMVP.Model model){
12 | return new LoginActivityPresenter(model);
13 | }
14 |
15 | @Provides
16 | public LoginActivityMVP.Model provideLoginActivityModel(LoginRepository repository){
17 | return new LoginModel(repository);
18 | }
19 |
20 | @Provides
21 | public LoginRepository provideLoginRepository(){
22 | return new MemoryRepository();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/java/com/tetraandroid/retrofitexample/root/App.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample.root;
2 |
3 | import android.app.Application;
4 |
5 | import com.tetraandroid.retrofitexample.http.ApiModule;
6 |
7 | public class App extends Application {
8 |
9 | private ApplicationComponent component;
10 |
11 | @Override
12 | public void onCreate() {
13 | super.onCreate();
14 |
15 | component = DaggerApplicationComponent.builder()
16 | .applicationModule(new ApplicationModule(this))
17 | .apiModule(new ApiModule())
18 | .build();
19 | }
20 |
21 | public ApplicationComponent getComponent() {
22 | return component;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/DaggerExample/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Volumes/HDD/Development/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/DaggerExample/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Volumes/HDD/Development/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/FinalappExample/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Volumes/HDD/Development/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/JunitExample/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Volumes/HDD/Development/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/MvpExample/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/renegens/Development/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/RetrofitExample/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Volumes/HDD/Development/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/RxJavaExample/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Volumes/HDD/Development/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/LambdaExample/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/renegens/Development/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/java/com/tetraandroid/junitexample/login/MemoryRepository.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.junitexample.login;
2 |
3 | public class MemoryRepository implements LoginRepository {
4 |
5 | private User user;
6 |
7 | @Override
8 | public User getUser() {
9 |
10 | if (user == null) {
11 | User user = new User("Fox", "Mulder");
12 | user.setId(0);
13 | this.user = user;
14 | return this.user;
15 | } else {
16 | return user;
17 | }
18 |
19 | }
20 |
21 | @Override
22 | public void saveUser(User user) {
23 |
24 | this.user.setFirstName(user.getFirstName());
25 | this.user.setLastName(user.getLastName());
26 |
27 |
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/LambdaExample/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
11 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/DaggerExample/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | org.gradle.jvmargs=-Xmx1536m
13 |
14 | # When configured, Gradle will run in incubating parallel mode.
15 | # This option should only be used with decoupled projects. More details, visit
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17 | # org.gradle.parallel=true
18 |
--------------------------------------------------------------------------------
/JunitExample/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | org.gradle.jvmargs=-Xmx1536m
13 |
14 | # When configured, Gradle will run in incubating parallel mode.
15 | # This option should only be used with decoupled projects. More details, visit
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17 | # org.gradle.parallel=true
18 |
--------------------------------------------------------------------------------
/LambdaExample/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | org.gradle.jvmargs=-Xmx1536m
13 |
14 | # When configured, Gradle will run in incubating parallel mode.
15 | # This option should only be used with decoupled projects. More details, visit
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17 | # org.gradle.parallel=true
18 |
--------------------------------------------------------------------------------
/MvpExample/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | org.gradle.jvmargs=-Xmx1536m
13 |
14 | # When configured, Gradle will run in incubating parallel mode.
15 | # This option should only be used with decoupled projects. More details, visit
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17 | # org.gradle.parallel=true
18 |
--------------------------------------------------------------------------------
/RxJavaExample/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | org.gradle.jvmargs=-Xmx1536m
13 |
14 | # When configured, Gradle will run in incubating parallel mode.
15 | # This option should only be used with decoupled projects. More details, visit
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17 | # org.gradle.parallel=true
18 |
--------------------------------------------------------------------------------
/DiffUtilExample/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | org.gradle.jvmargs=-Xmx1536m
13 |
14 | # When configured, Gradle will run in incubating parallel mode.
15 | # This option should only be used with decoupled projects. More details, visit
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17 | # org.gradle.parallel=true
18 |
--------------------------------------------------------------------------------
/FinalappExample/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | org.gradle.jvmargs=-Xmx1536m
13 |
14 | # When configured, Gradle will run in incubating parallel mode.
15 | # This option should only be used with decoupled projects. More details, visit
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17 | # org.gradle.parallel=true
18 |
--------------------------------------------------------------------------------
/RetrofitExample/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | org.gradle.jvmargs=-Xmx1536m
13 |
14 | # When configured, Gradle will run in incubating parallel mode.
15 | # This option should only be used with decoupled projects. More details, visit
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17 | # org.gradle.parallel=true
18 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/java/com/renegens/mvpexample/login/LoginActivityMVP.java:
--------------------------------------------------------------------------------
1 | package com.renegens.mvpexample.login;
2 |
3 | public interface LoginActivityMVP {
4 |
5 | interface View{
6 |
7 | String getFirstName();
8 | String getLastName();
9 |
10 | void showInputError();
11 |
12 | void setFirstName(String firstName);
13 |
14 | void setLastName(String lastName);
15 |
16 | void showUserSavedMessage();
17 | }
18 |
19 | interface Presenter {
20 |
21 | void setView(LoginActivityMVP.View view);
22 |
23 | void loginButtonClicked();
24 |
25 | void getCurrentUser();
26 |
27 | }
28 |
29 | interface Model {
30 |
31 | void createUser(String name, String lastName);
32 |
33 | User getUser();
34 |
35 |
36 |
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/java/com/tetraandroid/retrofitexample/http/apimodel/Twitch.java:
--------------------------------------------------------------------------------
1 |
2 | package com.tetraandroid.retrofitexample.http.apimodel;
3 |
4 | import com.google.gson.annotations.Expose;
5 | import com.google.gson.annotations.SerializedName;
6 |
7 | import java.util.List;
8 |
9 | public class Twitch {
10 |
11 | @SerializedName("_total")
12 | @Expose
13 | private Integer total;
14 | @SerializedName("top")
15 | @Expose
16 | private List top = null;
17 |
18 | public Integer getTotal() {
19 | return total;
20 | }
21 |
22 | public void setTotal(Integer total) {
23 | this.total = total;
24 | }
25 |
26 | public List getTop() {
27 | return top;
28 | }
29 |
30 | public void setTop(List top) {
31 | this.top = top;
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/java/com/tetraandroid/junitexample/root/App.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.junitexample.root;
2 |
3 | import android.app.Application;
4 |
5 | import com.tetraandroid.junitexample.login.LoginModule;
6 | import com.tetraandroid.junitexamplev.root.ApplicationComponent;
7 | import com.tetraandroid.junitexamplev.root.DaggerApplicationComponent;
8 |
9 | public class App extends Application {
10 |
11 | private ApplicationComponent component;
12 |
13 | @Override
14 | public void onCreate() {
15 | super.onCreate();
16 |
17 | component = DaggerApplicationComponent.builder()
18 | .applicationModule(new ApplicationModule(this))
19 | .loginModule(new LoginModule())
20 | .build();
21 | }
22 |
23 | public ApplicationComponent getComponent() {
24 | return component;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/LambdaExample/app/src/main/java/com/tetraandroid/lambdaexample/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.lambdaexample;
2 |
3 | import android.os.Bundle;
4 | import android.support.design.widget.Snackbar;
5 | import android.support.v7.app.AppCompatActivity;
6 | import android.util.Log;
7 | import android.widget.Button;
8 |
9 | public class MainActivity extends AppCompatActivity {
10 |
11 | @Override
12 | protected void onCreate(Bundle savedInstanceState) {
13 | super.onCreate(savedInstanceState);
14 | setContentView(R.layout.activity_main);
15 |
16 | final Button submitButton = findViewById(R.id.submit_button);
17 |
18 | submitButton.setOnClickListener(view -> {
19 | Snackbar.make(view, "Hello Lambda", Snackbar.LENGTH_LONG).show();
20 | Log.d("MainActivity", "Hello Again");
21 | });
22 | }
23 |
24 | }
25 |
26 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/java/com/tetraandroid/junitexample/login/User.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.junitexample.login;
2 |
3 | public class User {
4 |
5 | private int id;
6 | private String firstName;
7 | private String lastName;
8 |
9 | public User(String firstName, String lastName) {
10 | this.firstName = firstName;
11 | this.lastName = lastName;
12 | }
13 |
14 | public int getId() {
15 | return id;
16 | }
17 |
18 | public void setId(int id) {
19 | this.id = id;
20 | }
21 |
22 | public String getFirstName() {
23 | return firstName;
24 | }
25 |
26 | public void setFirstName(String firstName) {
27 | this.firstName = firstName;
28 | }
29 |
30 | public String getLastName() {
31 | return lastName;
32 | }
33 |
34 | public void setLastName(String lastName) {
35 | this.lastName = lastName;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/MvpExample/app/src/androidTest/java/com/renegens/mvpexample/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.renegens.mvpexample;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumentation test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.renegens.mvpexample", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/DaggerExample/app/src/androidTest/java/com/renegens/daggerexample/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.renegens.daggerexample;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumentation test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.renegens.daggerexample", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/DaggerExample/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/JunitExample/app/src/androidTest/java/com/tetraandroid/junitexample/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.junitexample;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumentation test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.tetraandroid.junitexample", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/java/com/tetraandroid/junitexample/login/LoginActivityMVP.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.junitexample.login;
2 |
3 | public interface LoginActivityMVP {
4 |
5 | interface View{
6 |
7 | String getFirstName();
8 | String getLastName();
9 |
10 | void showUserNotAvailable();
11 | void showUserAvailable();
12 | void showInputError();
13 |
14 | void setFirstName(String firstName);
15 |
16 | void setLastName(String lastName);
17 |
18 | void showUserSavedMessage();
19 | }
20 |
21 | interface Presenter {
22 |
23 | void setView(LoginActivityMVP.View view);
24 |
25 | void loginButtonClicked();
26 |
27 | void getCurrentUser();
28 |
29 | void saveUser();
30 | }
31 |
32 | interface Model {
33 |
34 | void createUser(String name, String lastName);
35 |
36 | User getUser();
37 |
38 |
39 |
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/androidTest/java/com/tetraandroid/retrofitexample/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumentation test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.tetraandroid.retrofitexample", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/androidTest/java/com/tetraandroid/retrofitexample/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumentation test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.tetraandroid.retrofitexample", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/androidTest/java/com/tetraandroid/retrofitexample/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumentation test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.tetraandroid.retrofitexample", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/androidTest/java/com/tetraandroid/retrofitexample/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.assertEquals;
11 |
12 | /**
13 | * Instrumentation test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.tetraandroid.retrofitexample", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/res/layout/topmovies_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
12 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/LambdaExample/app/src/androidTest/java/com/tetraandroid/lambdaexample/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.lambdaexample;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.assertEquals;
11 |
12 | /**
13 | * Instrumentation test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.tetraandroid.retrolambdaexample", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/root/App.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.root;
2 |
3 | import android.app.Application;
4 |
5 | import com.tetraandroid.finalappexample.http.ApiModuleForInfo;
6 | import com.tetraandroid.finalappexample.http.ApiModuleForName;
7 | import com.tetraandroid.finalappexample.topmovies.TopMoviesModule;
8 |
9 | public class App extends Application {
10 |
11 | private ApplicationComponent component;
12 |
13 | @Override
14 | public void onCreate() {
15 | super.onCreate();
16 |
17 | component = DaggerApplicationComponent.builder()
18 | .applicationModule(new ApplicationModule(this))
19 | .apiModuleForName(new ApiModuleForName())
20 | .topMoviesModule(new TopMoviesModule())
21 | .apiModuleForInfo(new ApiModuleForInfo())
22 | .build();
23 | }
24 |
25 | public ApplicationComponent getComponent() {
26 | return component;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/res/layout/movie_list_row.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/topmovies/TopMoviesModel.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.topmovies;
2 |
3 | import com.tetraandroid.finalappexample.http.apimodel.Result;
4 |
5 | import io.reactivex.Observable;
6 | import io.reactivex.functions.BiFunction;
7 |
8 |
9 | public class TopMoviesModel implements TopMoviesActivityMVP.Model {
10 |
11 | private Repository repository;
12 |
13 | public TopMoviesModel(Repository repository) {
14 | this.repository = repository;
15 | }
16 |
17 | @Override
18 | public Observable result() {
19 | return Observable.zip(
20 | repository.getResultData(),
21 | repository.getCountryData(),
22 | new BiFunction() {
23 | @Override
24 | public ViewModel apply(Result result, String s) {
25 | return new ViewModel(result.title, s);
26 | }
27 | }
28 | );
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/res/layout/topmovies_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
13 |
14 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/java/com/tetraandroid/retrofitexample/http/apimodel/Top.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample.http.apimodel;
2 |
3 | import com.google.gson.annotations.Expose;
4 | import com.google.gson.annotations.SerializedName;
5 |
6 | public class Top {
7 |
8 | @SerializedName("channels")
9 | @Expose
10 | private Integer channels;
11 | @SerializedName("viewers")
12 | @Expose
13 | private Integer viewers;
14 | @SerializedName("game")
15 | @Expose
16 | private Game game;
17 |
18 | public Integer getChannels() {
19 | return channels;
20 | }
21 |
22 | public void setChannels(Integer channels) {
23 | this.channels = channels;
24 | }
25 |
26 | public Integer getViewers() {
27 | return viewers;
28 | }
29 |
30 | public void setViewers(Integer viewers) {
31 | this.viewers = viewers;
32 | }
33 |
34 | public Game getGame() {
35 | return game;
36 | }
37 |
38 | public void setGame(Game game) {
39 | this.game = game;
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/topmovies/TopMoviesModule.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.topmovies;
2 |
3 | import com.tetraandroid.finalappexample.http.MoreInfoApiService;
4 | import com.tetraandroid.finalappexample.http.MovieApiService;
5 |
6 | import javax.inject.Singleton;
7 |
8 | import dagger.Module;
9 | import dagger.Provides;
10 |
11 | @Module
12 | public class TopMoviesModule {
13 |
14 | @Provides
15 | public TopMoviesActivityMVP.Presenter provideTopMoviesActivityPresenter(TopMoviesActivityMVP.Model topMoviesModel) {
16 | return new TopMoviesPresenter(topMoviesModel);
17 | }
18 |
19 | @Provides
20 | public TopMoviesActivityMVP.Model provideTopMoviesActivityModel(Repository repository) {
21 | return new TopMoviesModel(repository);
22 | }
23 |
24 | @Singleton
25 | @Provides
26 | public Repository provideRepo(MovieApiService movieApiService, MoreInfoApiService moreInfoApiService) {
27 | return new TopMoviesRepository(movieApiService, moreInfoApiService);
28 | }
29 |
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/res/layout/activity_login.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
17 |
18 |
25 |
26 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/res/layout/activity_login.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
17 |
18 |
25 |
26 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/java/com/tetraandroid/rxjavaexample/http/apimodel/Links.java:
--------------------------------------------------------------------------------
1 |
2 | package com.tetraandroid.rxjavaexample.http.apimodel;
3 |
4 | import javax.annotation.Generated;
5 | import com.google.gson.annotations.Expose;
6 | import com.google.gson.annotations.SerializedName;
7 |
8 | @Generated("org.jsonschema2pojo")
9 | public class Links {
10 |
11 | @SerializedName("self")
12 | @Expose
13 | private String self;
14 | @SerializedName("next")
15 | @Expose
16 | private String next;
17 |
18 | /**
19 | *
20 | * @return
21 | * The self
22 | */
23 | public String getSelf() {
24 | return self;
25 | }
26 |
27 | /**
28 | *
29 | * @param self
30 | * The self
31 | */
32 | public void setSelf(String self) {
33 | this.self = self;
34 | }
35 |
36 | /**
37 | *
38 | * @return
39 | * The next
40 | */
41 | public String getNext() {
42 | return next;
43 | }
44 |
45 | /**
46 | *
47 | * @param next
48 | * The next
49 | */
50 | public void setNext(String next) {
51 | this.next = next;
52 | }
53 |
54 | }
55 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/java/com/tetraandroid/diffutilexample/helper/MyDiffUtil.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.diffutilexample.helper;
2 |
3 | import android.support.v7.util.DiffUtil;
4 |
5 | import com.tetraandroid.diffutilexample.http.apimodel.Result;
6 |
7 | import java.util.List;
8 |
9 | public class MyDiffUtil extends DiffUtil.Callback {
10 |
11 | private List oldList;
12 | private List newList;
13 |
14 | public MyDiffUtil(List oldList, List newList) {
15 | this.oldList = oldList;
16 | this.newList = newList;
17 | }
18 |
19 | @Override
20 | public int getOldListSize() {
21 | return oldList.size();
22 | }
23 |
24 | @Override
25 | public int getNewListSize() {
26 | return newList.size();
27 | }
28 |
29 | @Override
30 | public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
31 | return oldList.get(oldItemPosition).id == newList.get(newItemPosition).id;
32 | }
33 |
34 | @Override
35 | public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
36 | return oldList.get(oldItemPosition).equals(newList.get(newItemPosition));
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/LambdaExample/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 |
4 | android {
5 | compileSdkVersion 27
6 | buildToolsVersion '27.0.3'
7 | defaultConfig {
8 | applicationId "com.tetraandroid.lambdaexample"
9 | minSdkVersion 21
10 | targetSdkVersion 27
11 | versionCode 1
12 | versionName "1.0"
13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
14 | }
15 | buildTypes {
16 | release {
17 | minifyEnabled false
18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
19 | }
20 | }
21 | android {
22 | compileOptions {
23 | sourceCompatibility JavaVersion.VERSION_1_8
24 | targetCompatibility JavaVersion.VERSION_1_8
25 | }
26 | }
27 | }
28 |
29 | dependencies {
30 | compile fileTree(dir: 'libs', include: ['*.jar'])
31 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
32 | exclude group: 'com.android.support', module: 'support-annotations'
33 | })
34 | compile 'com.android.support:appcompat-v7:27.1.1'
35 | compile 'com.android.support:design:27.1.1'
36 | testCompile 'junit:junit:4.12'
37 | }
38 |
--------------------------------------------------------------------------------
/DaggerExample/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 |
4 | android {
5 | compileSdkVersion 25
6 | buildToolsVersion '26.0.2'
7 | defaultConfig {
8 | applicationId "com.renegens.daggerexample"
9 | minSdkVersion 16
10 | targetSdkVersion 25
11 | versionCode 1
12 | versionName "1.0"
13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
14 | }
15 | buildTypes {
16 | release {
17 | minifyEnabled false
18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
19 | }
20 | }
21 | }
22 |
23 | dependencies {
24 | compile fileTree(dir: 'libs', include: ['*.jar'])
25 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
26 | exclude group: 'com.android.support', module: 'support-annotations'
27 | })
28 | compile 'com.android.support:appcompat-v7:25.1.1'
29 | compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4'
30 | testCompile 'junit:junit:4.12'
31 |
32 | // Injections
33 | compile 'com.google.dagger:dagger:2.12'
34 | annotationProcessor 'com.google.dagger:dagger-compiler:2.12'
35 | provided 'javax.annotation:jsr250-api:1.0'
36 | }
37 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/java/com/tetraandroid/retrofitexample/http/ApiModule.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample.http;
2 |
3 | import dagger.Module;
4 | import dagger.Provides;
5 | import okhttp3.OkHttpClient;
6 | import okhttp3.logging.HttpLoggingInterceptor;
7 | import retrofit2.Retrofit;
8 | import retrofit2.converter.gson.GsonConverterFactory;
9 |
10 | @Module
11 | public class ApiModule {
12 |
13 | public final String BASE_URL = "https://api.twitch.tv/kraken/";
14 |
15 | @Provides
16 | public OkHttpClient provideClient() {
17 |
18 | HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
19 | interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
20 |
21 | return new OkHttpClient.Builder().addInterceptor(interceptor).build();
22 |
23 | }
24 |
25 | @Provides
26 | public Retrofit provideRetrofit(String baseURL, OkHttpClient client) {
27 | return new Retrofit.Builder()
28 | .baseUrl(baseURL)
29 | .client(client)
30 | .addConverterFactory(GsonConverterFactory.create())
31 | .build();
32 | }
33 |
34 | @Provides
35 | public TwitchAPI provideApiService() {
36 | return provideRetrofit(BASE_URL, provideClient()).create(TwitchAPI.class);
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/java/com/tetraandroid/retrofitexample/http/apimodel/Box.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample.http.apimodel;
2 |
3 | import com.google.gson.annotations.Expose;
4 | import com.google.gson.annotations.SerializedName;
5 |
6 | public class Box {
7 |
8 | @SerializedName("large")
9 | @Expose
10 | private String large;
11 | @SerializedName("medium")
12 | @Expose
13 | private String medium;
14 | @SerializedName("small")
15 | @Expose
16 | private String small;
17 | @SerializedName("template")
18 | @Expose
19 | private String template;
20 |
21 | public String getLarge() {
22 | return large;
23 | }
24 |
25 | public void setLarge(String large) {
26 | this.large = large;
27 | }
28 |
29 | public String getMedium() {
30 | return medium;
31 | }
32 |
33 | public void setMedium(String medium) {
34 | this.medium = medium;
35 | }
36 |
37 | public String getSmall() {
38 | return small;
39 | }
40 |
41 | public void setSmall(String small) {
42 | this.small = small;
43 | }
44 |
45 | public String getTemplate() {
46 | return template;
47 | }
48 |
49 | public void setTemplate(String template) {
50 | this.template = template;
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/java/com/tetraandroid/retrofitexample/http/apimodel/Logo.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample.http.apimodel;
2 |
3 | import com.google.gson.annotations.Expose;
4 | import com.google.gson.annotations.SerializedName;
5 |
6 | public class Logo {
7 |
8 | @SerializedName("large")
9 | @Expose
10 | private String large;
11 | @SerializedName("medium")
12 | @Expose
13 | private String medium;
14 | @SerializedName("small")
15 | @Expose
16 | private String small;
17 | @SerializedName("template")
18 | @Expose
19 | private String template;
20 |
21 | public String getLarge() {
22 | return large;
23 | }
24 |
25 | public void setLarge(String large) {
26 | this.large = large;
27 | }
28 |
29 | public String getMedium() {
30 | return medium;
31 | }
32 |
33 | public void setMedium(String medium) {
34 | this.medium = medium;
35 | }
36 |
37 | public String getSmall() {
38 | return small;
39 | }
40 |
41 | public void setSmall(String small) {
42 | this.small = small;
43 | }
44 |
45 | public String getTemplate() {
46 | return template;
47 | }
48 |
49 | public void setTemplate(String template) {
50 | this.template = template;
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/MvpExample/app/src/test/java/com/renegens/mvpexample/PresenterTests.java:
--------------------------------------------------------------------------------
1 | package com.renegens.mvpexample;
2 |
3 | import com.renegens.mvpexample.login.LoginActivityMVP;
4 | import com.renegens.mvpexample.login.LoginActivityPresenter;
5 | import com.renegens.mvpexample.login.User;
6 |
7 | import org.junit.Before;
8 | import org.junit.Test;
9 |
10 | import static org.mockito.Mockito.mock;
11 | import static org.mockito.Mockito.verifyZeroInteractions;
12 | import static org.mockito.Mockito.when;
13 |
14 | public class PresenterTests {
15 |
16 | LoginActivityMVP.Model mockLoginModel;
17 | LoginActivityMVP.View mockView;
18 | LoginActivityPresenter presenter;
19 | User user;
20 |
21 | @Before
22 | public void setup(){
23 |
24 | mockLoginModel = mock(LoginActivityMVP.Model.class);
25 |
26 | user = new User("Fox", "Mulder");
27 |
28 | when(mockLoginModel.getUser()).thenReturn(user);
29 |
30 | mockView = mock(LoginActivityMVP.View.class);
31 |
32 | presenter = new LoginActivityPresenter(mockLoginModel);
33 |
34 | presenter.setView(mockView);
35 |
36 | }
37 |
38 |
39 | @Test
40 | public void noInteractionWithView(){
41 |
42 | presenter.getCurrentUser();
43 |
44 | verifyZeroInteractions(mockView);
45 |
46 |
47 |
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/JunitExample/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 |
4 | android {
5 | compileSdkVersion 25
6 | buildToolsVersion "25.0.2"
7 | defaultConfig {
8 | applicationId "com.tetraandroid.junitexample"
9 | minSdkVersion 16
10 | targetSdkVersion 25
11 | versionCode 1
12 | versionName "1.0"
13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
14 | }
15 | buildTypes {
16 | release {
17 | minifyEnabled false
18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
19 | }
20 | }
21 | }
22 |
23 | dependencies {
24 | compile fileTree(dir: 'libs', include: ['*.jar'])
25 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
26 | exclude group: 'com.android.support', module: 'support-annotations'
27 | })
28 | compile 'com.android.support:appcompat-v7:25.1.1'
29 | compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4'
30 | testCompile 'junit:junit:4.12'
31 | testCompile 'org.mockito:mockito-core:1.10.19'
32 |
33 | //injection
34 | compile 'com.google.dagger:dagger:2.9'
35 | annotationProcessor 'com.google.dagger:dagger-compiler:2.9'
36 | provided 'javax.annotation:jsr250-api:1.0'
37 | }
38 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/res/layout/movie_list_row.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
13 |
24 |
25 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/MvpExample/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 |
4 | android {
5 | compileSdkVersion 25
6 | buildToolsVersion "25.0.2"
7 | defaultConfig {
8 | applicationId "com.renegens.mvpexample"
9 | minSdkVersion 16
10 | targetSdkVersion 25
11 | versionCode 1
12 | versionName "1.0"
13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
14 | }
15 | buildTypes {
16 | release {
17 | minifyEnabled false
18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
19 | }
20 | }
21 | }
22 |
23 | dependencies {
24 | compile fileTree(dir: 'libs', include: ['*.jar'])
25 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
26 | exclude group: 'com.android.support', module: 'support-annotations'
27 | })
28 | compile 'com.android.support:appcompat-v7:25.1.1'
29 | testCompile 'junit:junit:4.12'
30 | testCompile 'org.mockito:mockito-core:1.10.19'
31 |
32 |
33 | //injection
34 | compile 'com.google.dagger:dagger:2.9'
35 | annotationProcessor 'com.google.dagger:dagger-compiler:2.9'
36 |
37 | compile 'com.jakewharton:butterknife:8.5.1'
38 | annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
39 |
40 | provided 'javax.annotation:jsr250-api:1.0'
41 | }
42 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/java/com/renegens/mvpexample/login/LoginActivityPresenter.java:
--------------------------------------------------------------------------------
1 | package com.renegens.mvpexample.login;
2 |
3 | import android.support.annotation.Nullable;
4 |
5 | public class LoginActivityPresenter implements LoginActivityMVP.Presenter {
6 |
7 | @Nullable
8 | private LoginActivityMVP.View view;
9 | private LoginActivityMVP.Model model;
10 |
11 | public LoginActivityPresenter(LoginActivityMVP.Model model) {
12 | this.model = model;
13 | }
14 |
15 | @Override
16 | public void setView(LoginActivityMVP.View view) {
17 |
18 | this.view = view;
19 |
20 | }
21 |
22 | @Override
23 | public void loginButtonClicked() {
24 |
25 | if (view != null) {
26 | if (view.getFirstName().trim().equals("") || view.getLastName().trim().equals("")) {
27 | view.showInputError();
28 | } else {
29 |
30 | model.createUser(view.getFirstName(), view.getLastName());
31 | view.showUserSavedMessage();
32 |
33 | }
34 |
35 | }
36 |
37 | }
38 |
39 | @Override
40 | public void getCurrentUser() {
41 |
42 | User user = model.getUser();
43 |
44 | if (user != null) {
45 | if (view != null) {
46 | view.setFirstName(user.getFirstName());
47 | view.setLastName(user.getLastName());
48 | }
49 | }
50 |
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/java/com/tetraandroid/rxjavaexample/http/ApiModule.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.rxjavaexample.http;
2 |
3 | import dagger.Module;
4 | import dagger.Provides;
5 | import okhttp3.OkHttpClient;
6 | import okhttp3.logging.HttpLoggingInterceptor;
7 | import retrofit2.Retrofit;
8 | import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
9 | import retrofit2.converter.gson.GsonConverterFactory;
10 |
11 | @Module
12 | public class ApiModule {
13 |
14 | public final String BASE_URL = "https://api.twitch.tv/kraken/";
15 |
16 | @Provides
17 | public OkHttpClient provideClient() {
18 |
19 | HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
20 | interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
21 |
22 | return new OkHttpClient.Builder().addInterceptor(interceptor).build();
23 |
24 | }
25 |
26 | @Provides
27 | public Retrofit provideRetrofit(String baseURL, OkHttpClient client) {
28 | return new Retrofit.Builder()
29 | .baseUrl(baseURL)
30 | .client(client)
31 | .addConverterFactory(GsonConverterFactory.create())
32 | .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
33 | .build();
34 | }
35 |
36 | @Provides
37 | public TwitchAPI provideApiService() {
38 | return provideRetrofit(BASE_URL, provideClient()).create(TwitchAPI.class);
39 | }
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/java/com/tetraandroid/diffutilexample/helper/DividerItemDecoration.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.diffutilexample.helper;
2 |
3 | import android.content.Context;
4 | import android.graphics.Canvas;
5 | import android.graphics.drawable.Drawable;
6 | import android.support.v4.content.ContextCompat;
7 | import android.support.v7.widget.RecyclerView;
8 | import android.view.View;
9 |
10 | import com.tetraandroid.retrofitexample.R;
11 |
12 | public class DividerItemDecoration extends RecyclerView.ItemDecoration {
13 |
14 | private Drawable mDivider;
15 |
16 | public DividerItemDecoration(Context context) {
17 | mDivider = ContextCompat.getDrawable(context, R.drawable.recyclerview_divider_normal);
18 | }
19 |
20 | @Override
21 | public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
22 | int left = parent.getPaddingLeft();
23 | int right = parent.getWidth() - parent.getPaddingRight();
24 |
25 | int childCount = parent.getChildCount();
26 | for (int i = 0; i < childCount; i++) {
27 | View child = parent.getChildAt(i);
28 |
29 | RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
30 |
31 | int top = child.getBottom() + params.bottomMargin;
32 | int bottom = top + mDivider.getIntrinsicHeight();
33 |
34 | mDivider.setBounds(left, top, right, bottom);
35 | mDivider.draw(c);
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/topmovies/DividerItemDecoration.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.topmovies;
2 |
3 | import android.content.Context;
4 | import android.graphics.Canvas;
5 | import android.graphics.drawable.Drawable;
6 | import android.support.v4.content.ContextCompat;
7 | import android.support.v7.widget.RecyclerView;
8 | import android.view.View;
9 |
10 | import com.tetraandroid.retrofitexample.R;
11 |
12 | public class DividerItemDecoration extends RecyclerView.ItemDecoration {
13 |
14 | private Drawable mDivider;
15 |
16 | public DividerItemDecoration(Context context) {
17 | mDivider = ContextCompat.getDrawable(context, R.drawable.recyclerview_divider_normal);
18 | }
19 |
20 | @Override
21 | public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
22 | int left = parent.getPaddingLeft();
23 | int right = parent.getWidth() - parent.getPaddingRight();
24 |
25 | int childCount = parent.getChildCount();
26 | for (int i = 0; i < childCount; i++) {
27 | View child = parent.getChildAt(i);
28 |
29 | RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
30 |
31 | int top = child.getBottom() + params.bottomMargin;
32 | int bottom = top + mDivider.getIntrinsicHeight();
33 |
34 | mDivider.setBounds(left, top, right, bottom);
35 | mDivider.draw(c);
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/http/apimodel/TopRated.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.http.apimodel;
2 |
3 | import com.google.gson.annotations.Expose;
4 | import com.google.gson.annotations.SerializedName;
5 |
6 | import javax.annotation.Generated;
7 | import java.util.ArrayList;
8 | import java.util.List;
9 |
10 | @Generated("org.jsonschema2pojo")
11 | public class TopRated {
12 |
13 | @SerializedName("page")
14 | @Expose
15 | public Integer page;
16 | @SerializedName("results")
17 | @Expose
18 | public List results = new ArrayList();
19 | @SerializedName("total_results")
20 | @Expose
21 | public Integer totalResults;
22 | @SerializedName("total_pages")
23 | @Expose
24 | public Integer totalPages;
25 |
26 | public Integer getPage() {
27 | return page;
28 | }
29 |
30 | public void setPage(Integer page) {
31 | this.page = page;
32 | }
33 |
34 | public List getResults() {
35 | return results;
36 | }
37 |
38 | public void setResults(List results) {
39 | this.results = results;
40 | }
41 |
42 | public Integer getTotalResults() {
43 | return totalResults;
44 | }
45 |
46 | public void setTotalResults(Integer totalResults) {
47 | this.totalResults = totalResults;
48 | }
49 |
50 | public Integer getTotalPages() {
51 | return totalPages;
52 | }
53 |
54 | public void setTotalPages(Integer totalPages) {
55 | this.totalPages = totalPages;
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/java/com/tetraandroid/diffutilexample/http/apimodel/TopRated.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.diffutilexample.http.apimodel;
2 |
3 | import com.google.gson.annotations.Expose;
4 | import com.google.gson.annotations.SerializedName;
5 |
6 | import java.util.ArrayList;
7 | import java.util.List;
8 |
9 | import javax.annotation.Generated;
10 |
11 | @Generated("org.jsonschema2pojo")
12 | public class TopRated {
13 |
14 | @SerializedName("page")
15 | @Expose
16 | public Integer page;
17 | @SerializedName("results")
18 | @Expose
19 | public List results = new ArrayList();
20 | @SerializedName("total_results")
21 | @Expose
22 | public Integer totalResults;
23 | @SerializedName("total_pages")
24 | @Expose
25 | public Integer totalPages;
26 |
27 | public Integer getPage() {
28 | return page;
29 | }
30 |
31 | public void setPage(Integer page) {
32 | this.page = page;
33 | }
34 |
35 | public List getResults() {
36 | return results;
37 | }
38 |
39 | public void setResults(List results) {
40 | this.results = results;
41 | }
42 |
43 | public Integer getTotalResults() {
44 | return totalResults;
45 | }
46 |
47 | public void setTotalResults(Integer totalResults) {
48 | this.totalResults = totalResults;
49 | }
50 |
51 | public Integer getTotalPages() {
52 | return totalPages;
53 | }
54 |
55 | public void setTotalPages(Integer totalPages) {
56 | this.totalPages = totalPages;
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/java/com/tetraandroid/rxjavaexample/http/apimodel/Top.java:
--------------------------------------------------------------------------------
1 |
2 | package com.tetraandroid.rxjavaexample.http.apimodel;
3 |
4 | import javax.annotation.Generated;
5 | import com.google.gson.annotations.Expose;
6 | import com.google.gson.annotations.SerializedName;
7 |
8 | @Generated("org.jsonschema2pojo")
9 | public class Top {
10 |
11 | @SerializedName("game")
12 | @Expose
13 | private Game game;
14 | @SerializedName("viewers")
15 | @Expose
16 | private Integer viewers;
17 | @SerializedName("channels")
18 | @Expose
19 | private Integer channels;
20 |
21 | /**
22 | *
23 | * @return
24 | * The game
25 | */
26 | public Game getGame() {
27 | return game;
28 | }
29 |
30 | /**
31 | *
32 | * @param game
33 | * The game
34 | */
35 | public void setGame(Game game) {
36 | this.game = game;
37 | }
38 |
39 | /**
40 | *
41 | * @return
42 | * The viewers
43 | */
44 | public Integer getViewers() {
45 | return viewers;
46 | }
47 |
48 | /**
49 | *
50 | * @param viewers
51 | * The viewers
52 | */
53 | public void setViewers(Integer viewers) {
54 | this.viewers = viewers;
55 | }
56 |
57 | /**
58 | *
59 | * @return
60 | * The channels
61 | */
62 | public Integer getChannels() {
63 | return channels;
64 | }
65 |
66 | /**
67 | *
68 | * @param channels
69 | * The channels
70 | */
71 | public void setChannels(Integer channels) {
72 | this.channels = channels;
73 | }
74 |
75 | }
76 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/http/apimodel/Result.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.http.apimodel;
2 |
3 | import com.google.gson.annotations.Expose;
4 | import com.google.gson.annotations.SerializedName;
5 |
6 | import javax.annotation.Generated;
7 | import java.util.ArrayList;
8 | import java.util.List;
9 |
10 | @Generated("org.jsonschema2pojo")
11 | public class Result {
12 |
13 | @SerializedName("poster_path")
14 | @Expose
15 | public String posterPath;
16 | @SerializedName("adult")
17 | @Expose
18 | public Boolean adult;
19 | @SerializedName("overview")
20 | @Expose
21 | public String overview;
22 | @SerializedName("release_date")
23 | @Expose
24 | public String releaseDate;
25 | @SerializedName("genre_ids")
26 | @Expose
27 | public List genreIds = new ArrayList();
28 | @SerializedName("id")
29 | @Expose
30 | public Integer id;
31 | @SerializedName("original_title")
32 | @Expose
33 | public String originalTitle;
34 | @SerializedName("original_language")
35 | @Expose
36 | public String originalLanguage;
37 | @SerializedName("title")
38 | @Expose
39 | public String title;
40 | @SerializedName("backdrop_path")
41 | @Expose
42 | public String backdropPath;
43 | @SerializedName("popularity")
44 | @Expose
45 | public Double popularity;
46 | @SerializedName("vote_count")
47 | @Expose
48 | public Integer voteCount;
49 | @SerializedName("video")
50 | @Expose
51 | public Boolean video;
52 | @SerializedName("vote_average")
53 | @Expose
54 | public Double voteAverage;
55 |
56 | }
57 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/java/com/tetraandroid/diffutilexample/http/apimodel/Result.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.diffutilexample.http.apimodel;
2 |
3 | import com.google.gson.annotations.Expose;
4 | import com.google.gson.annotations.SerializedName;
5 |
6 | import java.util.ArrayList;
7 | import java.util.List;
8 |
9 | import javax.annotation.Generated;
10 |
11 | @Generated("org.jsonschema2pojo")
12 | public class Result {
13 |
14 | @SerializedName("poster_path")
15 | @Expose
16 | public String posterPath;
17 | @SerializedName("adult")
18 | @Expose
19 | public Boolean adult;
20 | @SerializedName("overview")
21 | @Expose
22 | public String overview;
23 | @SerializedName("release_date")
24 | @Expose
25 | public String releaseDate;
26 | @SerializedName("genre_ids")
27 | @Expose
28 | public List genreIds = new ArrayList();
29 | @SerializedName("id")
30 | @Expose
31 | public Integer id;
32 | @SerializedName("original_title")
33 | @Expose
34 | public String originalTitle;
35 | @SerializedName("original_language")
36 | @Expose
37 | public String originalLanguage;
38 | @SerializedName("title")
39 | @Expose
40 | public String title;
41 | @SerializedName("backdrop_path")
42 | @Expose
43 | public String backdropPath;
44 | @SerializedName("popularity")
45 | @Expose
46 | public Double popularity;
47 | @SerializedName("vote_count")
48 | @Expose
49 | public Integer voteCount;
50 | @SerializedName("video")
51 | @Expose
52 | public Boolean video;
53 | @SerializedName("vote_average")
54 | @Expose
55 | public Double voteAverage;
56 |
57 | }
58 |
--------------------------------------------------------------------------------
/RetrofitExample/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 |
4 | android {
5 | compileSdkVersion 25
6 | buildToolsVersion "25.0.3"
7 | defaultConfig {
8 | applicationId "com.tetraandroid.retrofitexample"
9 | minSdkVersion 16
10 | targetSdkVersion 25
11 | versionCode 1
12 | versionName "1.0"
13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
14 | }
15 | buildTypes {
16 | release {
17 | minifyEnabled false
18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
19 | }
20 | }
21 | }
22 |
23 | ext {
24 | retrofitVersion = '2.3.0'
25 | }
26 |
27 | dependencies {
28 | compile fileTree(dir: 'libs', include: ['*.jar'])
29 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
30 | exclude group: 'com.android.support', module: 'support-annotations'
31 | })
32 | compile 'com.android.support:appcompat-v7:25.3.1'
33 | compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4'
34 | testCompile 'junit:junit:4.12'
35 |
36 | //rest interactions
37 | compile "com.squareup.retrofit2:retrofit:$retrofitVersion"
38 |
39 | //JSON Parsing
40 | compile "com.squareup.retrofit2:converter-gson:$retrofitVersion"
41 | compile 'com.google.code.gson:gson:2.7'
42 |
43 | //http logging
44 | compile 'com.squareup.okhttp3:logging-interceptor:3.4.2'
45 |
46 | //injection
47 | compile 'com.google.dagger:dagger:2.9'
48 | annotationProcessor 'com.google.dagger:dagger-compiler:2.9'
49 | provided 'javax.annotation:jsr250-api:1.0'
50 |
51 |
52 | }
53 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/java/com/tetraandroid/retrofitexample/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample;
2 |
3 | import android.os.Bundle;
4 | import android.support.v7.app.AppCompatActivity;
5 |
6 | import com.tetraandroid.retrofitexample.http.TwitchAPI;
7 | import com.tetraandroid.retrofitexample.http.apimodel.Top;
8 | import com.tetraandroid.retrofitexample.http.apimodel.Twitch;
9 | import com.tetraandroid.retrofitexample.root.App;
10 |
11 | import java.util.List;
12 |
13 | import javax.inject.Inject;
14 |
15 | import retrofit2.Call;
16 | import retrofit2.Callback;
17 | import retrofit2.Response;
18 |
19 | public class MainActivity extends AppCompatActivity {
20 |
21 | @Inject
22 | TwitchAPI twitchAPI;
23 |
24 | @Override
25 | protected void onCreate(Bundle savedInstanceState) {
26 | super.onCreate(savedInstanceState);
27 | setContentView(R.layout.activity_main);
28 |
29 | ((App)getApplication()).getComponent().inject(this);
30 |
31 | Call call = twitchAPI.getTopGames("replace_here_the_client_id_generated_by_the_twitch_api");
32 |
33 | call.enqueue(new Callback() {
34 | @Override
35 | public void onResponse(Call call, Response response) {
36 | List gameList = response.body().getTop();
37 |
38 | for (Top top : gameList){
39 | System.out.println(top.getGame().getName());
40 | }
41 | }
42 |
43 | @Override
44 | public void onFailure(Call call, Throwable t) {
45 | t.printStackTrace();
46 | }
47 | });
48 |
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/java/com/tetraandroid/rxjavaexample/http/apimodel/Twitch.java:
--------------------------------------------------------------------------------
1 |
2 | package com.tetraandroid.rxjavaexample.http.apimodel;
3 |
4 | import com.google.gson.annotations.Expose;
5 | import com.google.gson.annotations.SerializedName;
6 |
7 | import javax.annotation.Generated;
8 | import java.util.ArrayList;
9 | import java.util.List;
10 |
11 | @Generated("org.jsonschema2pojo")
12 | public class Twitch {
13 |
14 | @SerializedName("_total")
15 | @Expose
16 | private Integer total;
17 | @SerializedName("_links")
18 | @Expose
19 | private Links links;
20 | @SerializedName("top")
21 | @Expose
22 | private List top = new ArrayList();
23 |
24 | /**
25 | *
26 | * @return
27 | * The total
28 | */
29 | public Integer getTotal() {
30 | return total;
31 | }
32 |
33 | /**
34 | *
35 | * @param total
36 | * The _total
37 | */
38 | public void setTotal(Integer total) {
39 | this.total = total;
40 | }
41 |
42 | /**
43 | *
44 | * @return
45 | * The links
46 | */
47 | public Links getLinks() {
48 | return links;
49 | }
50 |
51 | /**
52 | *
53 | * @param links
54 | * The _links
55 | */
56 | public void setLinks(Links links) {
57 | this.links = links;
58 | }
59 |
60 | /**
61 | *
62 | * @return
63 | * The top
64 | */
65 | public List getTop() {
66 | return top;
67 | }
68 |
69 | /**
70 | *
71 | * @param top
72 | * The top
73 | */
74 | public void setTop(List top) {
75 | this.top = top;
76 | }
77 |
78 | }
79 |
--------------------------------------------------------------------------------
/RetrofitExample/app/src/main/java/com/tetraandroid/retrofitexample/http/apimodel/Game.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.retrofitexample.http.apimodel;
2 |
3 | import com.google.gson.annotations.Expose;
4 | import com.google.gson.annotations.SerializedName;
5 |
6 | public class Game {
7 |
8 | @SerializedName("_id")
9 | @Expose
10 | private Integer id;
11 | @SerializedName("box")
12 | @Expose
13 | private Box box;
14 | @SerializedName("giantbomb_id")
15 | @Expose
16 | private Integer giantbombId;
17 | @SerializedName("logo")
18 | @Expose
19 | private Logo logo;
20 | @SerializedName("name")
21 | @Expose
22 | private String name;
23 | @SerializedName("popularity")
24 | @Expose
25 | private Integer popularity;
26 |
27 | public Integer getId() {
28 | return id;
29 | }
30 |
31 | public void setId(Integer id) {
32 | this.id = id;
33 | }
34 |
35 | public Box getBox() {
36 | return box;
37 | }
38 |
39 | public void setBox(Box box) {
40 | this.box = box;
41 | }
42 |
43 | public Integer getGiantbombId() {
44 | return giantbombId;
45 | }
46 |
47 | public void setGiantbombId(Integer giantbombId) {
48 | this.giantbombId = giantbombId;
49 | }
50 |
51 | public Logo getLogo() {
52 | return logo;
53 | }
54 |
55 | public void setLogo(Logo logo) {
56 | this.logo = logo;
57 | }
58 |
59 | public String getName() {
60 | return name;
61 | }
62 |
63 | public void setName(String name) {
64 | this.name = name;
65 | }
66 |
67 | public Integer getPopularity() {
68 | return popularity;
69 | }
70 |
71 | public void setPopularity(Integer popularity) {
72 | this.popularity = popularity;
73 | }
74 |
75 | }
76 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/topmovies/ListAdapter.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.topmovies;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.widget.TextView;
8 |
9 | import com.tetraandroid.retrofitexample.R;
10 |
11 | import java.util.List;
12 |
13 | public class ListAdapter extends RecyclerView.Adapter {
14 |
15 | private List list;
16 |
17 | public ListAdapter(List list) {
18 | this.list = list;
19 | }
20 |
21 | @Override
22 | public ListItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
23 | View itemView =
24 | LayoutInflater.from(parent.getContext()).inflate(R.layout.movie_list_row, parent, false);
25 | return new ListItemViewHolder(itemView);
26 | }
27 |
28 | @Override
29 | public void onBindViewHolder(ListItemViewHolder holder, int position) {
30 |
31 | holder.itemName.setText(list.get(position).getName());
32 | holder.countryName.setText(list.get(position).getCountry());
33 |
34 | }
35 |
36 | @Override
37 | public int getItemCount() {
38 |
39 | return list.size();
40 | }
41 |
42 | public static class ListItemViewHolder extends RecyclerView.ViewHolder {
43 |
44 | public TextView itemName;
45 | public TextView countryName;
46 |
47 | public ListItemViewHolder(View itemView) {
48 | super(itemView);
49 | itemName = (TextView) itemView.findViewById(R.id.textView_fragmentlist_task_name);
50 | countryName = (TextView) itemView.findViewById(R.id.textView_fragmentlist_country_name);
51 | }
52 | }
53 | }
54 |
55 |
--------------------------------------------------------------------------------
/RxJavaExample/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 |
4 | android {
5 | compileSdkVersion 25
6 | buildToolsVersion "25.0.2"
7 | defaultConfig {
8 | applicationId "com.tetraandroid.retrofitexample"
9 | minSdkVersion 16
10 | targetSdkVersion 25
11 | versionCode 1
12 | versionName "1.0"
13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
14 | }
15 | buildTypes {
16 | release {
17 | minifyEnabled false
18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
19 | }
20 | }
21 | }
22 |
23 | ext {
24 | retrofitVersion = '2.1.0'
25 | }
26 |
27 | dependencies {
28 | compile fileTree(dir: 'libs', include: ['*.jar'])
29 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
30 | exclude group: 'com.android.support', module: 'support-annotations'
31 | })
32 | compile 'com.android.support:appcompat-v7:25.1.1'
33 | compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4'
34 | testCompile 'junit:junit:4.12'
35 |
36 | //rest interactions
37 | compile "com.squareup.retrofit2:retrofit:$retrofitVersion"
38 |
39 | //JSON Parsing
40 | compile "com.squareup.retrofit2:converter-gson:$retrofitVersion"
41 | compile 'com.google.code.gson:gson:2.6.2'
42 |
43 | //http logging
44 | compile 'com.squareup.okhttp3:logging-interceptor:3.4.2'
45 |
46 | //injection
47 | compile 'com.google.dagger:dagger:2.9'
48 | annotationProcessor 'com.google.dagger:dagger-compiler:2.9'
49 | provided 'javax.annotation:jsr250-api:1.0'
50 |
51 | //RxJava
52 | compile 'io.reactivex:rxandroid:1.2.1'
53 | compile 'io.reactivex:rxjava:1.2.6'
54 | compile "com.squareup.retrofit2:adapter-rxjava:$retrofitVersion"
55 |
56 |
57 | }
58 |
--------------------------------------------------------------------------------
/JunitExample/app/src/main/java/com/tetraandroid/junitexample/login/LoginActivityPresenter.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.junitexample.login;
2 |
3 | import android.support.annotation.Nullable;
4 |
5 | public class LoginActivityPresenter implements LoginActivityMVP.Presenter {
6 |
7 | @Nullable
8 | private LoginActivityMVP.View view;
9 | private LoginActivityMVP.Model model;
10 |
11 | public LoginActivityPresenter(LoginActivityMVP.Model model) {
12 | this.model = model;
13 | }
14 |
15 | @Override
16 | public void setView(LoginActivityMVP.View view) {
17 |
18 | this.view = view;
19 |
20 | }
21 |
22 | @Override
23 | public void loginButtonClicked() {
24 |
25 | if (view != null) {
26 | if (view.getFirstName().trim().equals("") || view.getLastName().trim().equals("")) {
27 | view.showInputError();
28 | } else {
29 |
30 | model.createUser(view.getFirstName(), view.getLastName());
31 | view.showUserSavedMessage();
32 |
33 | }
34 |
35 | }
36 |
37 | }
38 |
39 | @Override
40 | public void getCurrentUser() {
41 |
42 | User user = model.getUser();
43 |
44 | if (user != null) {
45 | if (view != null) {
46 | view.setFirstName(user.getFirstName());
47 | view.setLastName(user.getLastName());
48 | }
49 | }else {
50 | view.showUserNotAvailable();
51 | }
52 |
53 | }
54 |
55 | @Override
56 | public void saveUser() {
57 |
58 | if (view != null) {
59 | if (view.getFirstName().trim().equals("") || view.getLastName().trim().equals("")) {
60 | view.showInputError();
61 | } else {
62 |
63 | model.createUser(view.getFirstName(), view.getLastName());
64 | view.showUserSavedMessage();
65 |
66 | }
67 | }
68 |
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/java/com/tetraandroid/diffutilexample/topmovies/ListAdapter.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.diffutilexample.topmovies;
2 |
3 | import android.support.v7.util.DiffUtil;
4 | import android.support.v7.widget.RecyclerView;
5 | import android.view.LayoutInflater;
6 | import android.view.View;
7 | import android.view.ViewGroup;
8 | import android.widget.TextView;
9 |
10 | import com.tetraandroid.diffutilexample.helper.MyDiffUtil;
11 | import com.tetraandroid.diffutilexample.http.apimodel.Result;
12 | import com.tetraandroid.retrofitexample.R;
13 |
14 | import java.util.List;
15 |
16 | public class ListAdapter extends RecyclerView.Adapter {
17 |
18 | private List list;
19 |
20 | public ListAdapter(List list) {
21 | this.list = list;
22 | }
23 |
24 | @Override
25 | public ListItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
26 | View itemView =
27 | LayoutInflater.from(parent.getContext()).inflate(R.layout.movie_list_row, parent, false);
28 | return new ListItemViewHolder(itemView);
29 | }
30 |
31 | @Override
32 | public void onBindViewHolder(ListItemViewHolder holder, int position) {
33 | holder.itemName.setText(list.get(position).title);
34 | }
35 |
36 | @Override
37 | public int getItemCount() {
38 | return list.size();
39 | }
40 |
41 | public void updateData(List newList) {
42 | MyDiffUtil diffUtil = new MyDiffUtil(list, newList);
43 | DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffUtil);
44 | list.clear();
45 | list.addAll(newList);
46 | diffResult.dispatchUpdatesTo(this);
47 | }
48 |
49 | public static class ListItemViewHolder extends RecyclerView.ViewHolder {
50 |
51 | public TextView itemName;
52 |
53 | public ListItemViewHolder(View itemView) {
54 | super(itemView);
55 | itemName = itemView.findViewById(R.id.movieName);
56 | }
57 | }
58 | }
59 |
60 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/java/com/tetraandroid/diffutilexample/topmovies/TopMoviesPresenter.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.diffutilexample.topmovies;
2 |
3 | import com.tetraandroid.diffutilexample.http.MovieApiService;
4 |
5 | import io.reactivex.android.schedulers.AndroidSchedulers;
6 | import io.reactivex.disposables.CompositeDisposable;
7 | import io.reactivex.schedulers.Schedulers;
8 |
9 |
10 | public class TopMoviesPresenter implements TopMoviesActivityMVP.Presenter {
11 |
12 | private TopMoviesActivityMVP.View view;
13 | private CompositeDisposable subscription;
14 | private MovieApiService service;
15 |
16 | public TopMoviesPresenter(MovieApiService service) {
17 | this.service = service;
18 | subscription = new CompositeDisposable();
19 | }
20 |
21 | @Override
22 | public void attachView(TopMoviesActivityMVP.View view) {
23 | this.view = view;
24 | }
25 |
26 | @Override
27 | public void detachView() {
28 | subscription.clear();
29 | }
30 |
31 | @Override
32 | public void loadData() {
33 | if (view != null) {
34 | view.setLoading(true);
35 | }
36 |
37 | subscription.add(
38 | service.getTopRatedMovies(1)
39 | .subscribeOn(Schedulers.io())
40 | .observeOn(AndroidSchedulers.mainThread())
41 | .doOnTerminate(() -> {
42 | if (view != null) {
43 | view.setLoading(false);
44 | }
45 | })
46 | .subscribe(topRated -> {
47 | if (view != null) {
48 | view.updateData(topRated.results);
49 | }
50 | }, error -> {
51 | if (view != null) {
52 | view.showSnackbar(error.getLocalizedMessage());
53 | }
54 | })
55 | );
56 | }
57 |
58 | }
59 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/java/com/tetraandroid/rxjavaexample/http/apimodel/Logo.java:
--------------------------------------------------------------------------------
1 |
2 | package com.tetraandroid.rxjavaexample.http.apimodel;
3 |
4 | import javax.annotation.Generated;
5 | import com.google.gson.annotations.Expose;
6 | import com.google.gson.annotations.SerializedName;
7 |
8 | @Generated("org.jsonschema2pojo")
9 | public class Logo {
10 |
11 | @SerializedName("large")
12 | @Expose
13 | private String large;
14 | @SerializedName("medium")
15 | @Expose
16 | private String medium;
17 | @SerializedName("small")
18 | @Expose
19 | private String small;
20 | @SerializedName("template")
21 | @Expose
22 | private String template;
23 |
24 | /**
25 | *
26 | * @return
27 | * The large
28 | */
29 | public String getLarge() {
30 | return large;
31 | }
32 |
33 | /**
34 | *
35 | * @param large
36 | * The large
37 | */
38 | public void setLarge(String large) {
39 | this.large = large;
40 | }
41 |
42 | /**
43 | *
44 | * @return
45 | * The medium
46 | */
47 | public String getMedium() {
48 | return medium;
49 | }
50 |
51 | /**
52 | *
53 | * @param medium
54 | * The medium
55 | */
56 | public void setMedium(String medium) {
57 | this.medium = medium;
58 | }
59 |
60 | /**
61 | *
62 | * @return
63 | * The small
64 | */
65 | public String getSmall() {
66 | return small;
67 | }
68 |
69 | /**
70 | *
71 | * @param small
72 | * The small
73 | */
74 | public void setSmall(String small) {
75 | this.small = small;
76 | }
77 |
78 | /**
79 | *
80 | * @return
81 | * The template
82 | */
83 | public String getTemplate() {
84 | return template;
85 | }
86 |
87 | /**
88 | *
89 | * @param template
90 | * The template
91 | */
92 | public void setTemplate(String template) {
93 | this.template = template;
94 | }
95 |
96 | }
97 |
--------------------------------------------------------------------------------
/RxJavaExample/app/src/main/java/com/tetraandroid/rxjavaexample/http/apimodel/Box.java:
--------------------------------------------------------------------------------
1 |
2 | package com.tetraandroid.rxjavaexample.http.apimodel;
3 |
4 | import com.google.gson.annotations.Expose;
5 | import com.google.gson.annotations.SerializedName;
6 |
7 | import javax.annotation.Generated;
8 |
9 | @Generated("org.jsonschema2pojo")
10 | public class Box {
11 |
12 | @SerializedName("large")
13 | @Expose
14 | private String large;
15 | @SerializedName("medium")
16 | @Expose
17 | private String medium;
18 | @SerializedName("small")
19 | @Expose
20 | private String small;
21 | @SerializedName("template")
22 | @Expose
23 | private String template;
24 |
25 | /**
26 | *
27 | * @return
28 | * The large
29 | */
30 | public String getLarge() {
31 | return large;
32 | }
33 |
34 | /**
35 | *
36 | * @param large
37 | * The large
38 | */
39 | public void setLarge(String large) {
40 | this.large = large;
41 | }
42 |
43 | /**
44 | *
45 | * @return
46 | * The medium
47 | */
48 | public String getMedium() {
49 | return medium;
50 | }
51 |
52 | /**
53 | *
54 | * @param medium
55 | * The medium
56 | */
57 | public void setMedium(String medium) {
58 | this.medium = medium;
59 | }
60 |
61 | /**
62 | *
63 | * @return
64 | * The small
65 | */
66 | public String getSmall() {
67 | return small;
68 | }
69 |
70 | /**
71 | *
72 | * @param small
73 | * The small
74 | */
75 | public void setSmall(String small) {
76 | this.small = small;
77 | }
78 |
79 | /**
80 | *
81 | * @return
82 | * The template
83 | */
84 | public String getTemplate() {
85 | return template;
86 | }
87 |
88 | /**
89 | *
90 | * @param template
91 | * The template
92 | */
93 | public void setTemplate(String template) {
94 | this.template = template;
95 | }
96 |
97 | }
98 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/topmovies/TopMoviesPresenter.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.topmovies;
2 |
3 | import io.reactivex.android.schedulers.AndroidSchedulers;
4 | import io.reactivex.disposables.Disposable;
5 | import io.reactivex.observers.DisposableObserver;
6 | import io.reactivex.schedulers.Schedulers;
7 |
8 |
9 | public class TopMoviesPresenter implements TopMoviesActivityMVP.Presenter {
10 |
11 | private TopMoviesActivityMVP.View view;
12 | private Disposable subscription = null;
13 | private TopMoviesActivityMVP.Model model;
14 |
15 | public TopMoviesPresenter(TopMoviesActivityMVP.Model model) {
16 | this.model = model;
17 | }
18 |
19 | @Override
20 | public void loadData() {
21 |
22 | subscription = model
23 | .result()
24 | .subscribeOn(Schedulers.io())
25 | .observeOn(AndroidSchedulers.mainThread())
26 | .subscribeWith(new DisposableObserver() {
27 | @Override
28 | public void onComplete() {
29 | }
30 |
31 |
32 | @Override
33 | public void onError(Throwable e) {
34 | e.printStackTrace();
35 | if (view != null) {
36 | view.showSnackbar("Error getting movies");
37 | }
38 | }
39 |
40 | @Override
41 | public void onNext(ViewModel viewModel) {
42 | if (view != null) {
43 | view.updateData(viewModel);
44 | }
45 | }
46 | });
47 | }
48 |
49 | @Override
50 | public void rxUnsubscribe() {
51 | if (subscription != null) {
52 | if (!subscription.isDisposed()) {
53 | subscription.dispose();
54 | }
55 | }
56 | }
57 |
58 | @Override
59 | public void setView(TopMoviesActivityMVP.View view) {
60 | this.view = view;
61 | }
62 |
63 | }
64 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/http/ApiModuleForInfo.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.http;
2 |
3 | import java.io.IOException;
4 |
5 | import dagger.Module;
6 | import dagger.Provides;
7 | import okhttp3.HttpUrl;
8 | import okhttp3.Interceptor;
9 | import okhttp3.OkHttpClient;
10 | import okhttp3.Request;
11 | import okhttp3.Response;
12 | import okhttp3.logging.HttpLoggingInterceptor;
13 | import retrofit2.Retrofit;
14 | import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
15 | import retrofit2.converter.gson.GsonConverterFactory;
16 |
17 | @Module
18 | public class ApiModuleForInfo {
19 |
20 | public final String BASE_URL = "http://www.omdbapi.com";
21 | public final String API_KEY = "4f1016c2";
22 |
23 |
24 | @Provides
25 | public OkHttpClient provideClient() {
26 |
27 | HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
28 | interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
29 |
30 | return new OkHttpClient.Builder().addInterceptor(interceptor).addInterceptor(new Interceptor() {
31 | @Override
32 | public Response intercept(Chain chain) throws IOException {
33 | Request request = chain.request();
34 | HttpUrl url = request.url().newBuilder().addQueryParameter(
35 | "apikey",
36 | API_KEY
37 | ).build();
38 | request = request.newBuilder().url(url).build();
39 | return chain.proceed(request);
40 | }
41 | }).build();
42 | }
43 |
44 | @Provides
45 | public Retrofit provideRetrofit(String baseURL, OkHttpClient client) {
46 | return new Retrofit.Builder()
47 | .baseUrl(baseURL)
48 | .client(client)
49 | .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
50 | .addConverterFactory(GsonConverterFactory.create())
51 | .build();
52 | }
53 |
54 | @Provides
55 | public MoreInfoApiService provideApiService() {
56 | return provideRetrofit(BASE_URL, provideClient()).create(MoreInfoApiService.class);
57 | }
58 |
59 | }
60 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/src/main/java/com/tetraandroid/diffutilexample/http/ApiModuleForName.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.diffutilexample.http;
2 |
3 | import java.io.IOException;
4 |
5 | import dagger.Module;
6 | import dagger.Provides;
7 | import okhttp3.HttpUrl;
8 | import okhttp3.Interceptor;
9 | import okhttp3.OkHttpClient;
10 | import okhttp3.Request;
11 | import okhttp3.Response;
12 | import okhttp3.logging.HttpLoggingInterceptor;
13 | import retrofit2.Retrofit;
14 | import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
15 | import retrofit2.converter.gson.GsonConverterFactory;
16 |
17 | @Module
18 | public class ApiModuleForName {
19 |
20 | public final String BASE_URL = "http://api.themoviedb.org/3/movie/";
21 | public final String API_KEY = "8551c026bbf22a4a386ebb5b87a5296b";
22 |
23 |
24 | @Provides
25 | public OkHttpClient provideClient() {
26 |
27 | HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
28 | interceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
29 |
30 | return new OkHttpClient.Builder().addInterceptor(interceptor).addInterceptor(new Interceptor() {
31 | @Override
32 | public Response intercept(Chain chain) throws IOException {
33 | Request request = chain.request();
34 | HttpUrl url = request.url().newBuilder().addQueryParameter(
35 | "api_key",
36 | API_KEY
37 | ).build();
38 | request = request.newBuilder().url(url).build();
39 | return chain.proceed(request);
40 | }
41 | }).build();
42 | }
43 |
44 | @Provides
45 | public Retrofit provideRetrofit(String baseURL, OkHttpClient client) {
46 | return new Retrofit.Builder()
47 | .baseUrl(baseURL)
48 | .client(client)
49 | .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
50 | .addConverterFactory(GsonConverterFactory.create())
51 | .build();
52 | }
53 |
54 | @Provides
55 | public MovieApiService provideApiService() {
56 | return provideRetrofit(BASE_URL, provideClient()).create(MovieApiService.class);
57 | }
58 |
59 | }
60 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/http/ApiModuleForName.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.http;
2 |
3 | import java.io.IOException;
4 |
5 | import dagger.Module;
6 | import dagger.Provides;
7 | import okhttp3.HttpUrl;
8 | import okhttp3.Interceptor;
9 | import okhttp3.OkHttpClient;
10 | import okhttp3.Request;
11 | import okhttp3.Response;
12 | import okhttp3.logging.HttpLoggingInterceptor;
13 | import retrofit2.Retrofit;
14 | import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
15 | import retrofit2.converter.gson.GsonConverterFactory;
16 |
17 | @Module
18 | public class ApiModuleForName {
19 |
20 | public final String BASE_URL = "http://api.themoviedb.org/3/movie/";
21 | public final String API_KEY = "8551c026bbf22a4a386ebb5b87a5296b";
22 |
23 |
24 | @Provides
25 | public OkHttpClient provideClient() {
26 |
27 | HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
28 | interceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
29 |
30 | return new OkHttpClient.Builder().addInterceptor(interceptor).addInterceptor(new Interceptor() {
31 | @Override
32 | public Response intercept(Chain chain) throws IOException {
33 | Request request = chain.request();
34 | HttpUrl url = request.url().newBuilder().addQueryParameter(
35 | "api_key",
36 | API_KEY
37 | ).build();
38 | request = request.newBuilder().url(url).build();
39 | return chain.proceed(request);
40 | }
41 | }).build();
42 | }
43 |
44 | @Provides
45 | public Retrofit provideRetrofit(String baseURL, OkHttpClient client) {
46 | return new Retrofit.Builder()
47 | .baseUrl(baseURL)
48 | .client(client)
49 | .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
50 | .addConverterFactory(GsonConverterFactory.create())
51 | .build();
52 | }
53 |
54 | @Provides
55 | public MovieApiService provideApiService() {
56 | return provideRetrofit(BASE_URL, provideClient()).create(MovieApiService.class);
57 | }
58 |
59 | }
60 |
--------------------------------------------------------------------------------
/FinalappExample/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 |
4 | android {
5 | compileSdkVersion 27
6 | buildToolsVersion '27.0.3'
7 | defaultConfig {
8 | applicationId "com.tetraandroid.finalappexample"
9 | minSdkVersion 16
10 | targetSdkVersion 27
11 | versionCode 1
12 | versionName "1.0"
13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
14 | }
15 | buildTypes {
16 | release {
17 | minifyEnabled false
18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
19 | }
20 | }
21 | }
22 |
23 | ext {
24 | supportLibraryVersion = '27.1.1'
25 | retrofitVersion = '2.3.0'
26 | }
27 |
28 | dependencies {
29 | compile fileTree(dir: 'libs', include: ['*.jar'])
30 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
31 | exclude group: 'com.android.support', module: 'support-annotations'
32 | })
33 | testCompile 'junit:junit:4.12'
34 |
35 | // Support Libraries
36 | implementation "com.android.support:appcompat-v7:$supportLibraryVersion"
37 | implementation "com.android.support:recyclerview-v7:$supportLibraryVersion"
38 | implementation "com.android.support:design:$supportLibraryVersion"
39 | implementation "com.android.support:support-v4:$supportLibraryVersion"
40 |
41 | //rest interactions
42 | implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
43 |
44 | //JSON Parsing
45 | implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion"
46 | implementation 'com.google.code.gson:gson:2.8.1'
47 |
48 | //http logging
49 | implementation 'com.squareup.okhttp3:logging-interceptor:3.9.1'
50 |
51 | //injection
52 | implementation 'com.google.dagger:dagger:2.14.1'
53 | annotationProcessor 'com.google.dagger:dagger-compiler:2.14.1'
54 | implementation 'com.jakewharton:butterknife:8.8.1'
55 | annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
56 | provided 'javax.annotation:jsr250-api:1.0'
57 |
58 | //RxJava
59 | implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
60 | implementation "io.reactivex.rxjava2:rxjava:2.1.12"
61 | implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofitVersion"
62 |
63 | }
64 |
--------------------------------------------------------------------------------
/DiffUtilExample/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 |
4 | android {
5 | compileSdkVersion 27
6 | buildToolsVersion '27.0.3'
7 | defaultConfig {
8 | applicationId "com.tetraandroid.diffutilexample"
9 | minSdkVersion 16
10 | targetSdkVersion 27
11 | versionCode 1
12 | versionName "1.0"
13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
14 | }
15 | buildTypes {
16 | release {
17 | minifyEnabled false
18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
19 | }
20 | }
21 | compileOptions {
22 | sourceCompatibility JavaVersion.VERSION_1_8
23 | targetCompatibility JavaVersion.VERSION_1_8
24 | }
25 | }
26 |
27 | ext {
28 | supportLibraryVersion = '27.1.1'
29 | retrofitVersion = '2.3.0'
30 | }
31 |
32 | dependencies {
33 | compile fileTree(dir: 'libs', include: ['*.jar'])
34 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
35 | exclude group: 'com.android.support', module: 'support-annotations'
36 | })
37 | testCompile 'junit:junit:4.12'
38 |
39 | // Support Libraries
40 | implementation "com.android.support:appcompat-v7:$supportLibraryVersion"
41 | implementation "com.android.support:recyclerview-v7:$supportLibraryVersion"
42 | implementation "com.android.support:design:$supportLibraryVersion"
43 | implementation "com.android.support:support-v4:$supportLibraryVersion"
44 |
45 | //rest interactions
46 | implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
47 |
48 | //JSON Parsing
49 | implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion"
50 | implementation 'com.google.code.gson:gson:2.8.1'
51 |
52 | //http logging
53 | implementation 'com.squareup.okhttp3:logging-interceptor:3.9.1'
54 |
55 | //injection
56 | implementation 'com.google.dagger:dagger:2.14.1'
57 | annotationProcessor 'com.google.dagger:dagger-compiler:2.14.1'
58 | implementation 'com.jakewharton:butterknife:8.8.1'
59 | annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
60 | provided 'javax.annotation:jsr250-api:1.0'
61 |
62 | //RxJava
63 | implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
64 | implementation "io.reactivex.rxjava2:rxjava:2.1.12"
65 | implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofitVersion"
66 |
67 | }
68 |
--------------------------------------------------------------------------------
/MvpExample/app/src/main/java/com/renegens/mvpexample/login/LoginActivity.java:
--------------------------------------------------------------------------------
1 | package com.renegens.mvpexample.login;
2 |
3 | import android.os.Bundle;
4 | import android.support.v7.app.AppCompatActivity;
5 | import android.view.View;
6 | import android.widget.Button;
7 | import android.widget.EditText;
8 | import android.widget.Toast;
9 |
10 | import com.renegens.mvpexample.R;
11 | import com.renegens.mvpexample.root.App;
12 |
13 | import javax.inject.Inject;
14 |
15 | public class LoginActivity extends AppCompatActivity implements LoginActivityMVP.View {
16 |
17 | @Inject
18 | LoginActivityMVP.Presenter presenter;
19 |
20 |
21 | private EditText firstName;
22 | private EditText lastName;
23 | private Button login;
24 |
25 | @Override
26 | protected void onCreate(Bundle savedInstanceState) {
27 | super.onCreate(savedInstanceState);
28 | setContentView(R.layout.activity_login);
29 |
30 | ((App) getApplication()).getComponent().inject(this);
31 |
32 | firstName = (EditText) findViewById(R.id.loginActivity_firstName_editText);
33 | lastName = (EditText) findViewById(R.id.loginActivity_lastName_editText);
34 | login = (Button) findViewById(R.id.loginActivity_login_button);
35 |
36 | login.setOnClickListener(new View.OnClickListener() {
37 | @Override
38 | public void onClick(View view) {
39 |
40 | presenter.loginButtonClicked();
41 |
42 | }
43 | });
44 |
45 |
46 | }
47 |
48 | @Override
49 | protected void onResume() {
50 | super.onResume();
51 | presenter.setView(this);
52 | presenter.getCurrentUser();
53 | }
54 |
55 | @Override
56 | public String getFirstName() {
57 | return firstName.getText().toString();
58 | }
59 |
60 | @Override
61 | public String getLastName() {
62 | return lastName.getText().toString();
63 | }
64 |
65 | @Override
66 | public void showInputError() {
67 | Toast.makeText(this, "First Name or last name cannot be empty", Toast.LENGTH_SHORT).show();
68 |
69 | }
70 |
71 | @Override
72 | public void setFirstName(String firstName) {
73 | this.firstName.setText(firstName);
74 | }
75 |
76 | @Override
77 | public void setLastName(String lastName) {
78 | this.lastName.setText(lastName);
79 | }
80 |
81 | @Override
82 | public void showUserSavedMessage() {
83 | Toast.makeText(this, "User saved successfully", Toast.LENGTH_SHORT).show();
84 |
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/DiffUtilExample/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/LambdaExample/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/FinalappExample/app/src/main/java/com/tetraandroid/finalappexample/topmovies/TopMoviesActivity.java:
--------------------------------------------------------------------------------
1 | package com.tetraandroid.finalappexample.topmovies;
2 |
3 | import android.os.Bundle;
4 | import android.support.design.widget.Snackbar;
5 | import android.support.v7.app.AppCompatActivity;
6 | import android.support.v7.widget.DefaultItemAnimator;
7 | import android.support.v7.widget.LinearLayoutManager;
8 | import android.support.v7.widget.RecyclerView;
9 | import android.view.ViewGroup;
10 |
11 | import com.tetraandroid.finalappexample.root.App;
12 | import com.tetraandroid.retrofitexample.R;
13 |
14 | import javax.inject.Inject;
15 | import java.util.ArrayList;
16 | import java.util.List;
17 |
18 | import butterknife.BindView;
19 | import butterknife.ButterKnife;
20 |
21 | public class TopMoviesActivity extends AppCompatActivity implements TopMoviesActivityMVP.View {
22 |
23 | private final String TAG = TopMoviesActivity.class.getName();
24 |
25 | @BindView(R.id.recycler_view)
26 | RecyclerView recyclerView;
27 |
28 | @BindView(R.id.listActivity_rootView)
29 | ViewGroup rootView;
30 |
31 | @Inject
32 | TopMoviesActivityMVP.Presenter presenter;
33 |
34 | private ListAdapter listAdapter;
35 | private List resultList = new ArrayList<>();
36 |
37 | @Override
38 | protected void onCreate(Bundle savedInstanceState) {
39 | super.onCreate(savedInstanceState);
40 | setContentView(R.layout.topmovies_activity);
41 |
42 | ((App) getApplication()).getComponent().inject(this);
43 |
44 | ButterKnife.bind(this);
45 |
46 | listAdapter = new ListAdapter(resultList);
47 | recyclerView.setAdapter(listAdapter);
48 | recyclerView.addItemDecoration(new DividerItemDecoration(this));
49 |
50 | recyclerView.setItemAnimator(new DefaultItemAnimator());
51 | recyclerView.setHasFixedSize(true);
52 | recyclerView.setLayoutManager(new LinearLayoutManager(this));
53 |
54 | }
55 |
56 | @Override
57 | protected void onStart() {
58 | super.onStart();
59 | presenter.setView(this);
60 | presenter.loadData();
61 | }
62 |
63 | @Override
64 | protected void onStop() {
65 | super.onStop();
66 | presenter.rxUnsubscribe();
67 | resultList.clear();
68 | listAdapter.notifyDataSetChanged();
69 |
70 |
71 | }
72 |
73 |
74 | @Override
75 | public void updateData(ViewModel viewModel) {
76 | resultList.add(viewModel);
77 | listAdapter.notifyItemInserted(resultList.size() - 1);
78 | }
79 |
80 | @Override
81 | public void showSnackbar(String msg) {
82 | Snackbar.make(rootView, msg, Snackbar.LENGTH_SHORT).show();
83 |
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/MvpExample/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/DaggerExample/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/FinalappExample/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/JunitExample/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/RetrofitExample/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------