├── .gitignore
├── 01_ConstraintLayout
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── a01_firstclass
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── a01_firstclass
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ ├── android_flat.png
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── a01_firstclass
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 01_ConstraintLayout_2
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── a012constraintlayout
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── a012constraintlayout
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ ├── ic_baseline_call_24.xml
│ │ │ ├── ic_baseline_favorite_24.xml
│ │ │ ├── ic_baseline_home_24.xml
│ │ │ ├── ic_baseline_share_24.xml
│ │ │ ├── ic_launcher_background.xml
│ │ │ └── image.jpeg
│ │ │ ├── layout
│ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── a012constraintlayout
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 02_1_ConstraintLayout_4
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── constraintlayoutguideline
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── constraintlayoutguideline
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ ├── food.jpeg
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── constraintlayoutguideline
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 02_ConstraintLayout_3
├── .gitignore
├── IMG_20200927_115135.jpg
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── a02_constraintlayout_3
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── a02_constraintlayout_3
│ │ │ │ ├── MainActivity.kt
│ │ │ │ └── SecondActivity.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ ├── activity_main.xml
│ │ │ ├── activity_second.xml
│ │ │ └── layout_input_part.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── values-bn
│ │ │ └── strings.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── a02_constraintlayout_3
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 03_WebViewAndUseOfThirdPartyLibrary
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── a03_webviewanduseofthirdpartylibrary
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── a03_webviewanduseofthirdpartylibrary
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── a03_webviewanduseofthirdpartylibrary
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 04_SharedPreference_Singletone_Pattern
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── sharedpreferencesingletonepattern
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── sharedpreferencesingletonepattern
│ │ │ │ ├── MainActivity.kt
│ │ │ │ ├── core
│ │ │ │ └── BaseActivity.kt
│ │ │ │ ├── data
│ │ │ │ ├── MainActivityModel.kt
│ │ │ │ └── MainActivityModelImpl.kt
│ │ │ │ ├── preference
│ │ │ │ ├── AppPreference.kt
│ │ │ │ └── AppPreferenceImpl.kt
│ │ │ │ └── singleton
│ │ │ │ ├── MyObject.kt
│ │ │ │ └── MySingletonClass.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── sharedpreferencesingletonepattern
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 05_Material_Card_ListView_Runtime_Permission
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── materialcardlistviewruntimepermission
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── materialcardlistviewruntimepermission
│ │ │ │ ├── MainActivity.kt
│ │ │ │ └── core
│ │ │ │ └── BaseActivity.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── materialcardlistviewruntimepermission
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 06_RecyclerView
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── recyclerview
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── recyclerview
│ │ │ │ ├── core
│ │ │ │ └── BaseActivity.kt
│ │ │ │ ├── model
│ │ │ │ ├── Food.kt
│ │ │ │ ├── FoodModel.kt
│ │ │ │ └── FoodModelImpl.kt
│ │ │ │ └── view
│ │ │ │ └── home
│ │ │ │ ├── FoodItemClickListener.kt
│ │ │ │ ├── FoodListAdapter.kt
│ │ │ │ ├── FoodViewHolder.kt
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ ├── food.jpeg
│ │ │ ├── ic_baseline_favorite_24.xml
│ │ │ ├── ic_baseline_favorite_border_24.xml
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ ├── activity_main.xml
│ │ │ ├── item_food.xml
│ │ │ └── toolbar.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── recyclerview
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 07_Retrofit_GET_Request
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── retrofitgetrequest
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── retrofitgetrequest
│ │ │ │ ├── core
│ │ │ │ └── BaseActivity.kt
│ │ │ │ ├── feature
│ │ │ │ └── home
│ │ │ │ │ ├── model
│ │ │ │ │ ├── Food.kt
│ │ │ │ │ ├── FoodCallback.kt
│ │ │ │ │ ├── HomeModel.kt
│ │ │ │ │ └── HomeModelImpl.kt
│ │ │ │ │ └── view
│ │ │ │ │ └── MainActivity.kt
│ │ │ │ └── network
│ │ │ │ ├── FoodApiInterface.kt
│ │ │ │ └── RetrofitClient.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ ├── food.jpeg
│ │ │ ├── ic_baseline_favorite_24.xml
│ │ │ ├── ic_baseline_favorite_border_24.xml
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ ├── activity_main.xml
│ │ │ ├── item_food.xml
│ │ │ └── toolbar.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── retrofitgetrequest
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── data
│ └── food.json
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 08_Recap_RecyclerView_Retrofit
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── retrofitgetrequest
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── retrofitgetrequest
│ │ │ │ ├── core
│ │ │ │ └── BaseActivity.kt
│ │ │ │ ├── feature
│ │ │ │ ├── food_details
│ │ │ │ │ ├── model
│ │ │ │ │ │ ├── Food.kt
│ │ │ │ │ │ ├── FoodCallback.kt
│ │ │ │ │ │ ├── HomeModel.kt
│ │ │ │ │ │ └── HomeModelImpl.kt
│ │ │ │ │ └── view
│ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ └── food_list
│ │ │ │ │ ├── model
│ │ │ │ │ ├── FoodListCallback.kt
│ │ │ │ │ ├── FoodListModel.kt
│ │ │ │ │ └── FoodListModelImpl.kt
│ │ │ │ │ └── view
│ │ │ │ │ ├── FoodListActivity.kt
│ │ │ │ │ ├── FoodListAdapter.kt
│ │ │ │ │ ├── FoodViewHolder.kt
│ │ │ │ │ └── ItemClickListener.kt
│ │ │ │ └── network
│ │ │ │ ├── FoodApiInterface.kt
│ │ │ │ └── RetrofitClient.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ ├── food.jpeg
│ │ │ ├── ic_baseline_favorite_24.xml
│ │ │ ├── ic_baseline_favorite_border_24.xml
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ ├── activity_food_list.xml
│ │ │ ├── activity_main.xml
│ │ │ ├── item_food.xml
│ │ │ └── toolbar.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── retrofitgetrequest
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── data
│ ├── food.json
│ └── foodlist.json
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 09_MVP_Architecture
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── mvp_architecture
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── mvp_architecture
│ │ │ │ ├── core
│ │ │ │ └── BaseActivity.kt
│ │ │ │ ├── feature
│ │ │ │ ├── food_details
│ │ │ │ │ ├── model
│ │ │ │ │ │ ├── Food.kt
│ │ │ │ │ │ ├── FoodCallback.kt
│ │ │ │ │ │ ├── FoodDetailsModel.kt
│ │ │ │ │ │ └── FoodDetailsModelImpl.kt
│ │ │ │ │ ├── presenter
│ │ │ │ │ │ ├── FoodDetailsPresenter.kt
│ │ │ │ │ │ └── FoodDetailsPresenterImpl.kt
│ │ │ │ │ └── view
│ │ │ │ │ │ ├── FoodDetailsActivity.kt
│ │ │ │ │ │ └── FoodDetailsView.kt
│ │ │ │ └── food_list
│ │ │ │ │ ├── model
│ │ │ │ │ ├── FoodListCallback.kt
│ │ │ │ │ ├── FoodListModel.kt
│ │ │ │ │ └── FoodListModelImpl.kt
│ │ │ │ │ ├── presenter
│ │ │ │ │ ├── FoodListPresenter.kt
│ │ │ │ │ └── FoodListPresenterImpl.kt
│ │ │ │ │ └── view
│ │ │ │ │ ├── FoodListActivity.kt
│ │ │ │ │ ├── FoodListAdapter.kt
│ │ │ │ │ ├── FoodListView.kt
│ │ │ │ │ ├── FoodViewHolder.kt
│ │ │ │ │ └── ItemClickListener.kt
│ │ │ │ └── network
│ │ │ │ ├── FoodApiInterface.kt
│ │ │ │ └── RetrofitClient.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ ├── food.jpeg
│ │ │ ├── ic_baseline_favorite_24.xml
│ │ │ ├── ic_baseline_favorite_border_24.xml
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ ├── activity_food_details.xml
│ │ │ ├── activity_food_list.xml
│ │ │ ├── item_food.xml
│ │ │ └── toolbar.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── values-night
│ │ │ └── themes.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── mvp_architecture
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── data
│ ├── food.json
│ └── foodlist.json
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 11_Post_Request_Authentication_MVP_Architecture
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── post_auth
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── post_auth
│ │ │ │ ├── core
│ │ │ │ ├── BaseActivity.kt
│ │ │ │ └── DataFetchCallback.kt
│ │ │ │ ├── feature
│ │ │ │ ├── home
│ │ │ │ │ ├── model
│ │ │ │ │ │ ├── HomeModel.kt
│ │ │ │ │ │ └── HomeModelImpl.kt
│ │ │ │ │ └── view
│ │ │ │ │ │ └── HomeActivity.kt
│ │ │ │ ├── login
│ │ │ │ │ ├── model
│ │ │ │ │ │ ├── AuthModel.kt
│ │ │ │ │ │ ├── AuthModelImpl.kt
│ │ │ │ │ │ ├── LoginResponse.kt
│ │ │ │ │ │ └── UserCredential.kt
│ │ │ │ │ └── view
│ │ │ │ │ │ └── LoginActivity.kt
│ │ │ │ └── student_list
│ │ │ │ │ └── model
│ │ │ │ │ ├── StudentModel.kt
│ │ │ │ │ ├── StudentModelImpl.kt
│ │ │ │ │ └── StudentResponse.kt
│ │ │ │ └── network
│ │ │ │ ├── ApiInterface.kt
│ │ │ │ └── RetrofitClient.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ ├── activity_home.xml
│ │ │ ├── activity_login.xml
│ │ │ └── toolbar.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── values-night
│ │ │ └── themes.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── post_auth
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── data
│ ├── food.json
│ └── foodlist.json
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 12_Fragment_Navigation_Drawer
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── fragment_navigation_drawer
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── fragment_navigation_drawer
│ │ │ │ ├── core
│ │ │ │ ├── BaseActivity.kt
│ │ │ │ └── DataFetchCallback.kt
│ │ │ │ ├── feature
│ │ │ │ ├── home
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ ├── model
│ │ │ │ │ │ ├── CourseInfoResponse.kt
│ │ │ │ │ │ ├── HomeModel.kt
│ │ │ │ │ │ └── HomeModelImpl.kt
│ │ │ │ │ ├── presenter
│ │ │ │ │ │ ├── HomePresenter.kt
│ │ │ │ │ │ └── HomePresenterImpl.kt
│ │ │ │ │ └── view
│ │ │ │ │ │ ├── HomeFragment.kt
│ │ │ │ │ │ └── HomeView.kt
│ │ │ │ ├── login
│ │ │ │ │ ├── model
│ │ │ │ │ │ ├── AuthModel.kt
│ │ │ │ │ │ ├── AuthModelImpl.kt
│ │ │ │ │ │ ├── LoginResponse.kt
│ │ │ │ │ │ └── UserCredential.kt
│ │ │ │ │ └── view
│ │ │ │ │ │ └── LoginFragment.kt
│ │ │ │ ├── student_details
│ │ │ │ │ └── view
│ │ │ │ │ │ └── StudentDetailsFragment.kt
│ │ │ │ └── student_list
│ │ │ │ │ ├── model
│ │ │ │ │ ├── StudentModel.kt
│ │ │ │ │ ├── StudentModelImpl.kt
│ │ │ │ │ └── StudentResponse.kt
│ │ │ │ │ └── view
│ │ │ │ │ └── StudentListFragment.kt
│ │ │ │ └── network
│ │ │ │ ├── ApiInterface.kt
│ │ │ │ └── RetrofitClient.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ ├── ic_launcher_background.xml
│ │ │ ├── ic_menu_camera.xml
│ │ │ ├── ic_menu_gallery.xml
│ │ │ ├── ic_menu_slideshow.xml
│ │ │ ├── placeholder.png
│ │ │ └── side_nav_bar.xml
│ │ │ ├── layout-land
│ │ │ └── test.xml
│ │ │ ├── layout-sw600dp
│ │ │ └── test.xml
│ │ │ ├── layout
│ │ │ ├── activity_main.xml
│ │ │ ├── app_bar_main.xml
│ │ │ ├── content_main.xml
│ │ │ ├── fragment_home.xml
│ │ │ ├── fragment_login.xml
│ │ │ ├── fragment_student_details.xml
│ │ │ ├── fragment_student_list.xml
│ │ │ ├── nav_header_main.xml
│ │ │ └── test.xml
│ │ │ ├── menu
│ │ │ ├── activity_main_drawer.xml
│ │ │ └── main.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── navigation
│ │ │ └── mobile_navigation.xml
│ │ │ ├── values-night
│ │ │ └── themes.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── fragment_navigation_drawer
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 13_Activity_LifeCycle_Pull_Refresh
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── a13_activity_lifecycle_pull_refresh
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── a13_activity_lifecycle_pull_refresh
│ │ │ │ ├── MainActivity.kt
│ │ │ │ └── SecondActivity.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ ├── activity_main.xml
│ │ │ └── activity_second.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── values-night
│ │ │ └── themes.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── a13_activity_lifecycle_pull_refresh
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 14_GPS_Location_Map_Data_Binding
├── .gitignore
├── README.md
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── google_map
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── google_map
│ │ │ │ ├── core
│ │ │ │ ├── BaseActivity.kt
│ │ │ │ ├── Constants.kt
│ │ │ │ ├── DataFetchCallback.kt
│ │ │ │ ├── PermissionUtils.kt
│ │ │ │ └── Utils.kt
│ │ │ │ └── feature
│ │ │ │ ├── home
│ │ │ │ ├── model
│ │ │ │ │ ├── LocationData.kt
│ │ │ │ │ ├── MainActivityModel.kt
│ │ │ │ │ └── MainActivityModelImpl.kt
│ │ │ │ ├── presenter
│ │ │ │ │ ├── MainActivityPresenter.kt
│ │ │ │ │ └── MainActivityPresenterImpl.kt
│ │ │ │ └── view
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ └── MainActivityView.kt
│ │ │ │ └── map_view
│ │ │ │ └── MapsActivity.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ ├── activity_main.xml
│ │ │ └── activity_maps.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── values-night
│ │ │ └── themes.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── google_map
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 15_Android_MVVM_Architecture
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── mvvm_food_app
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── mvvm_food_app
│ │ │ │ ├── core
│ │ │ │ ├── BaseActivity.kt
│ │ │ │ ├── DataFetchCallback.kt
│ │ │ │ └── ListItemClickListener.kt
│ │ │ │ ├── feature
│ │ │ │ ├── food_details
│ │ │ │ │ ├── model
│ │ │ │ │ │ ├── Food.kt
│ │ │ │ │ │ ├── FoodCallback.kt
│ │ │ │ │ │ ├── FoodDetailsModel.kt
│ │ │ │ │ │ └── FoodDetailsModelImpl.kt
│ │ │ │ │ ├── view
│ │ │ │ │ │ └── FoodDetailsActivity.kt
│ │ │ │ │ └── viewmodel
│ │ │ │ │ │ ├── FoodDetailsViewModel.kt
│ │ │ │ │ │ └── FoodDetailsViewModelFactory.kt
│ │ │ │ └── food_list
│ │ │ │ │ ├── model
│ │ │ │ │ ├── FoodListModel.kt
│ │ │ │ │ └── FoodListModelImpl.kt
│ │ │ │ │ ├── view
│ │ │ │ │ ├── FoodListActivity.kt
│ │ │ │ │ ├── FoodListAdapter.kt
│ │ │ │ │ └── FoodViewHolder.kt
│ │ │ │ │ └── viewmodel
│ │ │ │ │ └── FoodListViewModel.kt
│ │ │ │ └── network
│ │ │ │ ├── FoodApiInterface.kt
│ │ │ │ └── RetrofitClient.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ ├── food.jpeg
│ │ │ ├── ic_baseline_favorite_24.xml
│ │ │ ├── ic_baseline_favorite_border_24.xml
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ ├── activity_food_details.xml
│ │ │ ├── activity_food_list.xml
│ │ │ ├── item_food.xml
│ │ │ └── toolbar.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── values-night
│ │ │ └── themes.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── mvvm_food_app
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── data
│ ├── food.json
│ └── foodlist.json
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 16_SQLite_Db_Dialog_Fragment
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── sqlite
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── sqlite
│ │ │ │ ├── core
│ │ │ │ ├── BaseActivity.kt
│ │ │ │ ├── DataFetchCallback.kt
│ │ │ │ └── ListItemClickListener.kt
│ │ │ │ ├── data
│ │ │ │ ├── db
│ │ │ │ │ ├── DbHelper.kt
│ │ │ │ │ └── StudentDataSetChangeListener.kt
│ │ │ │ ├── model
│ │ │ │ │ └── student
│ │ │ │ │ │ ├── Student.kt
│ │ │ │ │ │ ├── StudentModel.kt
│ │ │ │ │ │ └── StudentModelImpl.kt
│ │ │ │ └── remote
│ │ │ │ │ └── RetrofitClient.kt
│ │ │ │ ├── ui
│ │ │ │ ├── student_creation
│ │ │ │ │ ├── view
│ │ │ │ │ │ └── StudentCreateDialogFragment.kt
│ │ │ │ │ └── viewmodel
│ │ │ │ │ │ ├── StudentCreateViewModel.kt
│ │ │ │ │ │ └── StudentCreateViewModelFactory.kt
│ │ │ │ ├── student_list
│ │ │ │ │ ├── view
│ │ │ │ │ │ ├── StudentListActivity.kt
│ │ │ │ │ │ ├── StudentListAdapter.kt
│ │ │ │ │ │ └── StudentViewHolder.kt
│ │ │ │ │ └── viewmodel
│ │ │ │ │ │ ├── StudentListViewModel.kt
│ │ │ │ │ │ └── StudentListViewModelFactory.kt
│ │ │ │ └── student_update
│ │ │ │ │ ├── view
│ │ │ │ │ └── StudentUpdateFragment.kt
│ │ │ │ │ └── viewmodel
│ │ │ │ │ ├── StudentUpdateViewModel.kt
│ │ │ │ │ └── StudentUpdateViewModelFactory.kt
│ │ │ │ └── utils
│ │ │ │ └── Const.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ ├── food.jpeg
│ │ │ ├── ic_baseline_delete_24.xml
│ │ │ ├── ic_baseline_edit_24.xml
│ │ │ ├── ic_baseline_favorite_24.xml
│ │ │ ├── ic_baseline_favorite_border_24.xml
│ │ │ ├── ic_baseline_person_add_alt_1_24.xml
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ ├── activity_student_list.xml
│ │ │ ├── fragment_student_create_dialog.xml
│ │ │ ├── fragment_student_update.xml
│ │ │ ├── item_student.xml
│ │ │ └── toolbar.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── values-night
│ │ │ └── themes.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── sqlite
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── data
│ ├── food.json
│ └── foodlist.json
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 17_Firebase_Push_Analytics
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── google-services.json
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── android_firebase_notification
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── android_firebase_notification
│ │ │ │ ├── analytics
│ │ │ │ ├── AppAnalytics.kt
│ │ │ │ └── AppAnalyticsImpl.kt
│ │ │ │ ├── core
│ │ │ │ └── BaseActivity.kt
│ │ │ │ ├── notification
│ │ │ │ ├── MyFirebaseMessagingService.kt
│ │ │ │ ├── NotificationConfig.kt
│ │ │ │ └── NotificationUtils.kt
│ │ │ │ └── ui
│ │ │ │ ├── MainActivity.kt
│ │ │ │ └── MessageShowActivity.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ ├── ic_launcher_background.xml
│ │ │ └── image_placeholder.png
│ │ │ ├── layout
│ │ │ ├── activity_main.xml
│ │ │ ├── activity_message_show.xml
│ │ │ └── toolbar.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── values-night
│ │ │ └── themes.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── android_firebase_notification
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 18_Room_Coroutines_ViewBinding
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── room_orm
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── room_orm
│ │ │ │ ├── core
│ │ │ │ ├── BaseActivity.kt
│ │ │ │ ├── DataFetchCallback.kt
│ │ │ │ └── ListItemClickListener.kt
│ │ │ │ ├── data
│ │ │ │ ├── local
│ │ │ │ │ ├── AppDatabase.kt
│ │ │ │ │ ├── DatabaseBuilder.kt
│ │ │ │ │ ├── StudentDao.kt
│ │ │ │ │ ├── StudentDataSetChangeListener.kt
│ │ │ │ │ └── SubjectDao.kt
│ │ │ │ ├── remote
│ │ │ │ │ └── RetrofitClient.kt
│ │ │ │ └── repository
│ │ │ │ │ ├── student
│ │ │ │ │ ├── Student.kt
│ │ │ │ │ ├── StudentRepository.kt
│ │ │ │ │ └── StudentRepositoryImpl.kt
│ │ │ │ │ └── subject
│ │ │ │ │ ├── Subject.kt
│ │ │ │ │ ├── SubjectRepository.kt
│ │ │ │ │ └── SubjectRepositoryImpl.kt
│ │ │ │ ├── ui
│ │ │ │ ├── student
│ │ │ │ │ ├── student_creation
│ │ │ │ │ │ ├── view
│ │ │ │ │ │ │ └── StudentCreateDialogFragment.kt
│ │ │ │ │ │ └── viewmodel
│ │ │ │ │ │ │ ├── StudentCreateViewModel.kt
│ │ │ │ │ │ │ └── StudentCreateViewModelFactory.kt
│ │ │ │ │ ├── student_list
│ │ │ │ │ │ ├── view
│ │ │ │ │ │ │ ├── StudentListActivity.kt
│ │ │ │ │ │ │ ├── StudentListAdapter.kt
│ │ │ │ │ │ │ └── StudentViewHolder.kt
│ │ │ │ │ │ └── viewmodel
│ │ │ │ │ │ │ ├── StudentListViewModel.kt
│ │ │ │ │ │ │ └── StudentListViewModelFactory.kt
│ │ │ │ │ └── student_update
│ │ │ │ │ │ ├── view
│ │ │ │ │ │ └── StudentUpdateFragment.kt
│ │ │ │ │ │ └── viewmodel
│ │ │ │ │ │ ├── StudentUpdateViewModel.kt
│ │ │ │ │ │ └── StudentUpdateViewModelFactory.kt
│ │ │ │ └── subject
│ │ │ │ │ ├── SubjectViewModel.kt
│ │ │ │ │ ├── SubjectViewModelFactory.kt
│ │ │ │ │ ├── subject_creation
│ │ │ │ │ └── SubjectCreateDialogFragment.kt
│ │ │ │ │ ├── subject_list
│ │ │ │ │ └── SubjectListActivity.kt
│ │ │ │ │ └── subject_update
│ │ │ │ │ └── SubjectUpdateDialogFragment.kt
│ │ │ │ └── utils
│ │ │ │ └── Const.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ ├── food.jpeg
│ │ │ ├── ic_baseline_delete_24.xml
│ │ │ ├── ic_baseline_edit_24.xml
│ │ │ ├── ic_baseline_favorite_24.xml
│ │ │ ├── ic_baseline_favorite_border_24.xml
│ │ │ ├── ic_baseline_library_add_24.xml
│ │ │ ├── ic_baseline_person_add_alt_1_24.xml
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ ├── activity_student_list.xml
│ │ │ ├── activity_subject_list.xml
│ │ │ ├── fragment_student_create_dialog.xml
│ │ │ ├── fragment_student_update.xml
│ │ │ ├── fragment_subject_create_dialog.xml
│ │ │ ├── fragment_subject_update_dialog.xml
│ │ │ ├── item_student.xml
│ │ │ ├── item_subject.xml
│ │ │ └── toolbar.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── values-night
│ │ │ └── themes.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── room_orm
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── data
│ ├── food.json
│ └── foodlist.json
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 19_MediaPlayer_Service
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── mediaplayer_service
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── mediaplayer_service
│ │ │ │ ├── Const.kt
│ │ │ │ ├── MainActivity.kt
│ │ │ │ └── media
│ │ │ │ ├── MediaService.kt
│ │ │ │ └── NotificationBuilder.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── raw
│ │ │ └── audio.mp3
│ │ │ ├── values-night
│ │ │ └── themes.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── mediaplayer_service
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 20_MVVM_With_Repository
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── room_orm
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── room_orm
│ │ │ │ ├── core
│ │ │ │ ├── BaseActivity.kt
│ │ │ │ ├── DataFetchCallback.kt
│ │ │ │ └── ListItemClickListener.kt
│ │ │ │ ├── data
│ │ │ │ ├── local
│ │ │ │ │ ├── db
│ │ │ │ │ │ ├── AppDatabase.kt
│ │ │ │ │ │ ├── DatabaseBuilder.kt
│ │ │ │ │ │ ├── student
│ │ │ │ │ │ │ ├── StudentDao.kt
│ │ │ │ │ │ │ ├── StudentDataSetChangeListener.kt
│ │ │ │ │ │ │ ├── StudentLocalDataSource.kt
│ │ │ │ │ │ │ └── StudentLocalDataSourceImpl.kt
│ │ │ │ │ │ └── subject
│ │ │ │ │ │ │ ├── SubjectDao.kt
│ │ │ │ │ │ │ ├── SubjectLocalDataSource.kt
│ │ │ │ │ │ │ └── SubjectLocalDataSourceImpl.kt
│ │ │ │ │ └── preference
│ │ │ │ │ │ ├── AppPreference.kt
│ │ │ │ │ │ └── AppPreferenceImpl.kt
│ │ │ │ ├── remote
│ │ │ │ │ ├── RetrofitClient.kt
│ │ │ │ │ └── ip_info
│ │ │ │ │ │ ├── IpInfoRemoteSource.kt
│ │ │ │ │ │ ├── IpInfoRemoteSourceImpl.kt
│ │ │ │ │ │ └── IpInfoRetrofitInterface.kt
│ │ │ │ └── repository
│ │ │ │ │ ├── client_ip
│ │ │ │ │ ├── IpInfo.kt
│ │ │ │ │ ├── IpInfoRepository.kt
│ │ │ │ │ └── IpInfoRepositoryImpl.kt
│ │ │ │ │ ├── student
│ │ │ │ │ ├── Student.kt
│ │ │ │ │ ├── StudentRepository.kt
│ │ │ │ │ └── StudentRepositoryImpl.kt
│ │ │ │ │ └── subject
│ │ │ │ │ ├── Subject.kt
│ │ │ │ │ ├── SubjectRepository.kt
│ │ │ │ │ └── SubjectRepositoryImpl.kt
│ │ │ │ ├── ui
│ │ │ │ ├── student
│ │ │ │ │ ├── student_creation
│ │ │ │ │ │ ├── view
│ │ │ │ │ │ │ └── StudentCreateDialogFragment.kt
│ │ │ │ │ │ └── viewmodel
│ │ │ │ │ │ │ ├── StudentCreateViewModel.kt
│ │ │ │ │ │ │ └── StudentCreateViewModelFactory.kt
│ │ │ │ │ ├── student_list
│ │ │ │ │ │ ├── view
│ │ │ │ │ │ │ ├── StudentListActivity.kt
│ │ │ │ │ │ │ ├── StudentListAdapter.kt
│ │ │ │ │ │ │ └── StudentViewHolder.kt
│ │ │ │ │ │ └── viewmodel
│ │ │ │ │ │ │ ├── StudentListViewModel.kt
│ │ │ │ │ │ │ └── StudentListViewModelFactory.kt
│ │ │ │ │ └── student_update
│ │ │ │ │ │ ├── view
│ │ │ │ │ │ └── StudentUpdateFragment.kt
│ │ │ │ │ │ └── viewmodel
│ │ │ │ │ │ ├── StudentUpdateViewModel.kt
│ │ │ │ │ │ └── StudentUpdateViewModelFactory.kt
│ │ │ │ └── subject
│ │ │ │ │ ├── SubjectViewModel.kt
│ │ │ │ │ ├── SubjectViewModelFactory.kt
│ │ │ │ │ ├── subject_creation
│ │ │ │ │ └── SubjectCreateDialogFragment.kt
│ │ │ │ │ ├── subject_list
│ │ │ │ │ └── SubjectListActivity.kt
│ │ │ │ │ └── subject_update
│ │ │ │ │ └── SubjectUpdateDialogFragment.kt
│ │ │ │ └── utils
│ │ │ │ ├── Const.kt
│ │ │ │ └── Utils.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ ├── food.jpeg
│ │ │ ├── ic_baseline_delete_24.xml
│ │ │ ├── ic_baseline_edit_24.xml
│ │ │ ├── ic_baseline_favorite_24.xml
│ │ │ ├── ic_baseline_favorite_border_24.xml
│ │ │ ├── ic_baseline_library_add_24.xml
│ │ │ ├── ic_baseline_person_add_alt_1_24.xml
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ ├── activity_student_list.xml
│ │ │ ├── activity_subject_list.xml
│ │ │ ├── fragment_student_create_dialog.xml
│ │ │ ├── fragment_student_update.xml
│ │ │ ├── fragment_subject_create_dialog.xml
│ │ │ ├── fragment_subject_update_dialog.xml
│ │ │ ├── item_student.xml
│ │ │ ├── item_subject.xml
│ │ │ └── toolbar.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── values-night
│ │ │ └── themes.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── room_orm
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── data
│ ├── food.json
│ └── foodlist.json
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── 21_MVVM_Dagger
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── hellohasan
│ │ │ └── mvvm_dagger
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── hellohasan
│ │ │ │ └── mvvm_dagger
│ │ │ │ ├── core
│ │ │ │ ├── App.kt
│ │ │ │ ├── AppViewModelFactory.kt
│ │ │ │ ├── BaseActivity.kt
│ │ │ │ ├── BaseViewModel.kt
│ │ │ │ ├── DataFetchCallback.kt
│ │ │ │ └── ListItemClickListener.kt
│ │ │ │ ├── data
│ │ │ │ ├── local
│ │ │ │ │ ├── db
│ │ │ │ │ │ ├── AppDatabase.kt
│ │ │ │ │ │ ├── student
│ │ │ │ │ │ │ ├── StudentDao.kt
│ │ │ │ │ │ │ ├── StudentDataSetChangeListener.kt
│ │ │ │ │ │ │ ├── StudentLocalDataSource.kt
│ │ │ │ │ │ │ └── StudentLocalDataSourceImpl.kt
│ │ │ │ │ │ └── subject
│ │ │ │ │ │ │ ├── SubjectDao.kt
│ │ │ │ │ │ │ ├── SubjectLocalDataSource.kt
│ │ │ │ │ │ │ └── SubjectLocalDataSourceImpl.kt
│ │ │ │ │ └── preference
│ │ │ │ │ │ ├── AppPreference.kt
│ │ │ │ │ │ └── AppPreferenceImpl.kt
│ │ │ │ ├── remote
│ │ │ │ │ ├── RetrofitClient.kt
│ │ │ │ │ └── ip_info
│ │ │ │ │ │ ├── IpInfoRemoteSource.kt
│ │ │ │ │ │ ├── IpInfoRemoteSourceImpl.kt
│ │ │ │ │ │ └── IpInfoRetrofitInterface.kt
│ │ │ │ └── repository
│ │ │ │ │ ├── client_ip
│ │ │ │ │ ├── IpInfo.kt
│ │ │ │ │ ├── IpInfoRepository.kt
│ │ │ │ │ └── IpInfoRepositoryImpl.kt
│ │ │ │ │ ├── student
│ │ │ │ │ ├── Student.kt
│ │ │ │ │ ├── StudentRepository.kt
│ │ │ │ │ └── StudentRepositoryImpl.kt
│ │ │ │ │ └── subject
│ │ │ │ │ ├── Subject.kt
│ │ │ │ │ ├── SubjectRepository.kt
│ │ │ │ │ └── SubjectRepositoryImpl.kt
│ │ │ │ ├── di
│ │ │ │ ├── annotation
│ │ │ │ │ ├── Qualifire.kt
│ │ │ │ │ ├── Scope.kt
│ │ │ │ │ └── ViewModelKey.kt
│ │ │ │ ├── component
│ │ │ │ │ └── AppComponent.kt
│ │ │ │ └── modules
│ │ │ │ │ ├── ActivityBuilder.kt
│ │ │ │ │ ├── AppModule.kt
│ │ │ │ │ ├── FragmentBuilder.kt
│ │ │ │ │ ├── LocalDataSource.kt
│ │ │ │ │ ├── RemoteSourceModule.kt
│ │ │ │ │ ├── RepositoryModule.kt
│ │ │ │ │ └── ViewModelModule.kt
│ │ │ │ ├── ui
│ │ │ │ ├── student
│ │ │ │ │ ├── student_creation
│ │ │ │ │ │ ├── StudentCreateDialogFragment.kt
│ │ │ │ │ │ └── StudentCreateViewModel.kt
│ │ │ │ │ ├── student_list
│ │ │ │ │ │ ├── StudentListActivity.kt
│ │ │ │ │ │ ├── StudentListAdapter.kt
│ │ │ │ │ │ ├── StudentListViewModel.kt
│ │ │ │ │ │ └── StudentViewHolder.kt
│ │ │ │ │ └── student_update
│ │ │ │ │ │ ├── StudentUpdateFragment.kt
│ │ │ │ │ │ └── StudentUpdateViewModel.kt
│ │ │ │ └── subject
│ │ │ │ │ ├── SubjectViewModel.kt
│ │ │ │ │ ├── subject_creation
│ │ │ │ │ └── SubjectCreateDialogFragment.kt
│ │ │ │ │ ├── subject_list
│ │ │ │ │ └── SubjectListActivity.kt
│ │ │ │ │ └── subject_update
│ │ │ │ │ └── SubjectUpdateDialogFragment.kt
│ │ │ │ └── utils
│ │ │ │ ├── Const.kt
│ │ │ │ └── Utils.kt
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ ├── food.jpeg
│ │ │ ├── ic_baseline_delete_24.xml
│ │ │ ├── ic_baseline_edit_24.xml
│ │ │ ├── ic_baseline_favorite_24.xml
│ │ │ ├── ic_baseline_favorite_border_24.xml
│ │ │ ├── ic_baseline_library_add_24.xml
│ │ │ ├── ic_baseline_person_add_alt_1_24.xml
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ ├── activity_student_list.xml
│ │ │ ├── activity_subject_list.xml
│ │ │ ├── fragment_student_create_dialog.xml
│ │ │ ├── fragment_student_update.xml
│ │ │ ├── fragment_subject_create_dialog.xml
│ │ │ ├── fragment_subject_update_dialog.xml
│ │ │ ├── item_student.xml
│ │ │ ├── item_subject.xml
│ │ │ └── toolbar.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── values-night
│ │ │ └── themes.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── hellohasan
│ │ └── mvvm_dagger
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── data
│ ├── food.json
│ └── foodlist.json
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── LICENSE
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/01_ConstraintLayout/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/main/res/drawable/android_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout/app/src/main/res/drawable/android_flat.png
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #6200EE
4 | #3700B3
5 | #03DAC5
6 |
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 01-FirstClass
3 |
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
--------------------------------------------------------------------------------
/01_ConstraintLayout/app/src/test/java/com/hellohasan/a01_firstclass/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.a01_firstclass
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/01_ConstraintLayout/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/01_ConstraintLayout/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Sep 22 20:11:47 BDT 2020
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-6.1.1-all.zip
7 |
--------------------------------------------------------------------------------
/01_ConstraintLayout/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "01_ConstraintLayout"
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/java/com/hellohasan/a012constraintlayout/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.a012constraintlayout
2 |
3 | import androidx.appcompat.app.AppCompatActivity
4 | import android.os.Bundle
5 |
6 | class MainActivity : AppCompatActivity() {
7 | override fun onCreate(savedInstanceState: Bundle?) {
8 | super.onCreate(savedInstanceState)
9 | setContentView(R.layout.activity_main)
10 | }
11 | }
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/drawable/ic_baseline_home_24.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/drawable/image.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout_2/app/src/main/res/drawable/image.jpeg
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout_2/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout_2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout_2/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout_2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout_2/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout_2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout_2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout_2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout_2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout_2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #6200EE
4 | #3700B3
5 | #03DAC5
6 |
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 01.2 Constraint Layout
3 |
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/app/src/test/java/com/hellohasan/a012constraintlayout/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.a012constraintlayout
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/01_ConstraintLayout_2/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Wed Sep 23 10:06:26 BDT 2020
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-6.1.1-all.zip
7 |
--------------------------------------------------------------------------------
/01_ConstraintLayout_2/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "01_ConstraintLayout_2"
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/java/com/hellohasan/constraintlayoutguideline/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.constraintlayoutguideline
2 |
3 | import androidx.appcompat.app.AppCompatActivity
4 | import android.os.Bundle
5 |
6 | class MainActivity : AppCompatActivity() {
7 | override fun onCreate(savedInstanceState: Bundle?) {
8 | super.onCreate(savedInstanceState)
9 | setContentView(R.layout.activity_main)
10 | }
11 | }
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/res/drawable/food.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_1_ConstraintLayout_4/app/src/main/res/drawable/food.jpeg
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_1_ConstraintLayout_4/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_1_ConstraintLayout_4/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_1_ConstraintLayout_4/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_1_ConstraintLayout_4/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_1_ConstraintLayout_4/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_1_ConstraintLayout_4/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_1_ConstraintLayout_4/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_1_ConstraintLayout_4/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_1_ConstraintLayout_4/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_1_ConstraintLayout_4/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #6200EE
4 | #3700B3
5 | #03DAC5
6 |
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | ConstraintLayout Guideline
3 |
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/app/src/test/java/com/hellohasan/constraintlayoutguideline/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.constraintlayoutguideline
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_1_ConstraintLayout_4/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Oct 16 08:00:24 BDT 2020
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-6.1.1-all.zip
7 |
--------------------------------------------------------------------------------
/02_1_ConstraintLayout_4/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "02_1_ConstraintLayout_Guideline"
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/IMG_20200927_115135.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_ConstraintLayout_3/IMG_20200927_115135.jpg
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_ConstraintLayout_3/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_ConstraintLayout_3/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_ConstraintLayout_3/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_ConstraintLayout_3/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_ConstraintLayout_3/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_ConstraintLayout_3/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_ConstraintLayout_3/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_ConstraintLayout_3/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_ConstraintLayout_3/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_ConstraintLayout_3/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/main/res/values-bn/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | আপনার নাম লিখুন
4 | ইংরেজিতে নাম লিখুন
5 | Submit
6 |
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #6200EE
4 | #3700B3
5 | #03DAC5
6 |
7 | #FFEB3B
8 |
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 02_ConstraintLayout_3
3 | Your name
4 | Name in English Language
5 | Submit
6 |
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/app/src/test/java/com/hellohasan/a02_constraintlayout_3/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.a02_constraintlayout_3
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/02_ConstraintLayout_3/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Sep 26 20:11:46 BDT 2020
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-6.1.1-all.zip
7 |
--------------------------------------------------------------------------------
/02_ConstraintLayout_3/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "02_ConstraintLayout_Include_tag_3"
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #6200EE
4 | #3700B3
5 | #03DAC5
6 |
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 03_WebViewAndUseOfThirdPartyLibrary
3 |
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/03_WebViewAndUseOfThirdPartyLibrary/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Sep 29 19:54:53 BDT 2020
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-6.1.1-all.zip
7 |
--------------------------------------------------------------------------------
/03_WebViewAndUseOfThirdPartyLibrary/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "03_WebView_And_Third_Party_Library"
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/java/com/hellohasan/sharedpreferencesingletonepattern/data/MainActivityModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.sharedpreferencesingletonepattern.data
2 |
3 | interface MainActivityModel {
4 | fun getUserName(): String?
5 | fun setUserName(text: String)
6 | }
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/java/com/hellohasan/sharedpreferencesingletonepattern/singleton/MyObject.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.sharedpreferencesingletonepattern.singleton
2 |
3 | object MyObject {
4 |
5 | private var capitalName: String = "Dhaka"
6 |
7 | init {
8 | print(capitalName)
9 | }
10 |
11 | fun getCapitalName(): String {
12 | return capitalName
13 | }
14 | }
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/04_SharedPreference_Singletone_Pattern/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #6200EE
4 | #3700B3
5 | #03DAC5
6 |
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | SharedPreference Singletone Pattern
3 | Show Country name
4 | Show Capital Name
5 |
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/04_SharedPreference_Singletone_Pattern/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Oct 06 15:50:46 BDT 2020
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-6.1.1-all.zip
7 |
--------------------------------------------------------------------------------
/04_SharedPreference_Singletone_Pattern/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "04_SharedPreference_Singletone"
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #6200EE
4 | #3700B3
5 | #03DAC5
6 |
7 | #FFFFFF
8 |
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Material Card ListView Runtime Permission
3 | Call Me
4 |
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/05_Material_Card_ListView_Runtime_Permission/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Oct 10 19:05:02 BDT 2020
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-6.1.1-all.zip
7 |
--------------------------------------------------------------------------------
/05_Material_Card_ListView_Runtime_Permission/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "05_Material_Card_ListView_Runtime_Permission"
--------------------------------------------------------------------------------
/06_RecyclerView/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/06_RecyclerView/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/java/com/hellohasan/recyclerview/model/Food.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.recyclerview.model
2 |
3 | data class Food (
4 | val id: Int,
5 | val name: String,
6 | val price: Int,
7 | val isFavorite: Boolean,
8 | val imageUrl: String,
9 | val rating: Float,
10 | val description: String,
11 | val restaurantName: String
12 | )
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/java/com/hellohasan/recyclerview/model/FoodModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.recyclerview.model
2 |
3 | interface FoodModel {
4 | fun getFoodList(): MutableList
5 | fun getFoodItemById(id: Int): Food
6 | }
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/java/com/hellohasan/recyclerview/view/home/FoodItemClickListener.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.recyclerview.view.home
2 |
3 | interface FoodItemClickListener {
4 | fun onItemClicked(position: Int)
5 | fun onFavoriteIconClicked(position: Int)
6 | }
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/res/drawable/food.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/06_RecyclerView/app/src/main/res/drawable/food.jpeg
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/res/drawable/ic_baseline_favorite_24.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/06_RecyclerView/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/06_RecyclerView/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/06_RecyclerView/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/06_RecyclerView/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/06_RecyclerView/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/06_RecyclerView/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/06_RecyclerView/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/06_RecyclerView/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/06_RecyclerView/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/06_RecyclerView/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #6200EE
4 | #3700B3
5 | #03DAC5
6 |
7 | #FFFFFF
8 |
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | RecyclerView
3 | FoodHub - RecyclerView
4 | Price
5 | %d TK
6 |
--------------------------------------------------------------------------------
/06_RecyclerView/app/src/test/java/com/hellohasan/recyclerview/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.recyclerview
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/06_RecyclerView/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/06_RecyclerView/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/06_RecyclerView/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Oct 13 20:19:19 BDT 2020
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-6.1.1-all.zip
7 |
--------------------------------------------------------------------------------
/06_RecyclerView/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "06_RecyclerView"
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/java/com/hellohasan/retrofitgetrequest/feature/home/model/FoodCallback.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.retrofitgetrequest.feature.home.model
2 |
3 | interface FoodCallback {
4 | fun onSuccess(food: Food)
5 | fun onError(errorMessage: Throwable)
6 | }
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/java/com/hellohasan/retrofitgetrequest/feature/home/model/HomeModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.retrofitgetrequest.feature.home.model
2 |
3 | interface HomeModel {
4 | fun getFoodDetails(foodCallback: FoodCallback)
5 | }
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/java/com/hellohasan/retrofitgetrequest/network/FoodApiInterface.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.retrofitgetrequest.network
2 |
3 | import com.hellohasan.retrofitgetrequest.feature.home.model.Food
4 | import retrofit2.Call
5 | import retrofit2.http.GET
6 |
7 | interface FoodApiInterface {
8 |
9 | @GET("hasancse91/android-course-v2/master/07_Retrofit_GET_Request/data/food.json")
10 | fun getFoodDetails(): Call
11 | }
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/res/drawable/food.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/07_Retrofit_GET_Request/app/src/main/res/drawable/food.jpeg
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/07_Retrofit_GET_Request/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/07_Retrofit_GET_Request/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/07_Retrofit_GET_Request/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/07_Retrofit_GET_Request/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/07_Retrofit_GET_Request/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/07_Retrofit_GET_Request/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/07_Retrofit_GET_Request/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/07_Retrofit_GET_Request/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/07_Retrofit_GET_Request/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/07_Retrofit_GET_Request/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #6200EE
4 | #3700B3
5 | #03DAC5
6 |
7 | #FFFFFF
8 |
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Retrofit GET Request
3 | FoodHub - GET Request
4 | Price
5 | %d TK
6 |
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/app/src/test/java/com/hellohasan/retrofitgetrequest/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.retrofitgetrequest
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/data/food.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": 101,
3 | "name": "Pizza Italizano",
4 | "price": 279,
5 | "discount": 10,
6 | "isFavorite": true,
7 | "imageUrl": "https://static.toiimg.com/photo/53110049.cms",
8 | "rating": 4.8,
9 | "description": "Lorem ipsum lorem lorem do to loream loolf foo",
10 | "restaurantName": "Mom's Kitchen",
11 | "restaurantZone": "Mirpur",
12 | "ingredients": [
13 | "Chicken",
14 | "Mashroom",
15 | "Cheese"
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/07_Retrofit_GET_Request/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Oct 17 12:29:20 BDT 2020
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-6.1.1-all.zip
7 |
--------------------------------------------------------------------------------
/07_Retrofit_GET_Request/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "07_Retrofit_GET_Request"
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/java/com/hellohasan/retrofitgetrequest/feature/food_details/model/FoodCallback.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.retrofitgetrequest.feature.food_details.model
2 |
3 | interface FoodCallback {
4 | fun onSuccess(food: Food)
5 | fun onError(errorMessage: Throwable)
6 | }
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/java/com/hellohasan/retrofitgetrequest/feature/food_details/model/HomeModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.retrofitgetrequest.feature.food_details.model
2 |
3 | interface HomeModel {
4 | fun getFoodDetails(foodCallback: FoodCallback)
5 | }
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/java/com/hellohasan/retrofitgetrequest/feature/food_list/model/FoodListCallback.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.retrofitgetrequest.feature.food_list.model
2 |
3 | import com.hellohasan.retrofitgetrequest.feature.food_details.model.Food
4 |
5 | interface FoodListCallback {
6 | fun onSuccess(foodList: MutableList)
7 | fun onError(throwable: Throwable)
8 | }
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/java/com/hellohasan/retrofitgetrequest/feature/food_list/model/FoodListModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.retrofitgetrequest.feature.food_list.model
2 |
3 | interface FoodListModel {
4 | fun getFoodList(foodListCallback: FoodListCallback)
5 | }
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/java/com/hellohasan/retrofitgetrequest/feature/food_list/view/ItemClickListener.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.retrofitgetrequest.feature.food_list.view
2 |
3 | interface ItemClickListener {
4 | fun onItemClicked(position: Int)
5 | }
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/res/drawable/food.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/08_Recap_RecyclerView_Retrofit/app/src/main/res/drawable/food.jpeg
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/08_Recap_RecyclerView_Retrofit/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #6200EE
4 | #3700B3
5 | #03DAC5
6 |
7 | #FFFFFF
8 |
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Retrofit GET Request
3 | FoodHub - GET Request
4 | Price
5 | %d TK
6 | Food List
7 |
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/app/src/test/java/com/hellohasan/retrofitgetrequest/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.retrofitgetrequest
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/data/food.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": 101,
3 | "name": "Pizza Italizano",
4 | "price": 279,
5 | "discount": 10,
6 | "isFavorite": true,
7 | "imageUrl": "https://static.toiimg.com/photo/53110049.cms",
8 | "rating": 4.8,
9 | "description": "Lorem ipsum lorem lorem do to loream loolf foo",
10 | "restaurantName": "Mom's Kitchen",
11 | "restaurantZone": "Mirpur",
12 | "ingredients": [
13 | "Chicken",
14 | "Mashroom",
15 | "Cheese"
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/08_Recap_RecyclerView_Retrofit/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Oct 20 19:54:25 BDT 2020
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-6.5-bin.zip
7 |
--------------------------------------------------------------------------------
/08_Recap_RecyclerView_Retrofit/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "08_Recap_of_RecyclerView_Retrofit"
--------------------------------------------------------------------------------
/09_MVP_Architecture/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/java/com/hellohasan/mvp_architecture/feature/food_details/model/FoodCallback.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvp_architecture.feature.food_details.model
2 |
3 | interface FoodCallback {
4 | fun onSuccess(food: Food)
5 | fun onError(errorMessage: Throwable)
6 | }
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/java/com/hellohasan/mvp_architecture/feature/food_details/model/FoodDetailsModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvp_architecture.feature.food_details.model
2 |
3 | interface FoodDetailsModel {
4 | fun getFoodDetails(foodCallback: FoodCallback)
5 | }
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/java/com/hellohasan/mvp_architecture/feature/food_details/presenter/FoodDetailsPresenter.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvp_architecture.feature.food_details.presenter
2 |
3 | interface FoodDetailsPresenter {
4 | fun getFoodDetails()
5 | fun detachView()
6 | }
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/java/com/hellohasan/mvp_architecture/feature/food_details/view/FoodDetailsView.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvp_architecture.feature.food_details.view
2 |
3 | import com.hellohasan.mvp_architecture.feature.food_details.model.Food
4 |
5 | interface FoodDetailsView {
6 | fun handleProgressBarVisibility(visibility: Int)
7 | fun onFoodDetailsFetchSuccess(food: Food)
8 | fun onFoodDetailsFetchFailure(errorMessage: String)
9 | }
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/java/com/hellohasan/mvp_architecture/feature/food_list/model/FoodListCallback.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.retrofitgetrequest.feature.food_list.model
2 |
3 | import com.hellohasan.mvp_architecture.feature.food_details.model.Food
4 |
5 | interface FoodListCallback {
6 | fun onSuccess(foodList: MutableList)
7 | fun onError(throwable: Throwable)
8 | }
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/java/com/hellohasan/mvp_architecture/feature/food_list/model/FoodListModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvp_architecture.feature.food_list.model
2 |
3 | import com.hellohasan.retrofitgetrequest.feature.food_list.model.FoodListCallback
4 |
5 | interface FoodListModel {
6 | fun getFoodList(foodListCallback: FoodListCallback)
7 | }
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/java/com/hellohasan/mvp_architecture/feature/food_list/presenter/FoodListPresenter.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvp_architecture.feature.food_list.presenter
2 |
3 | interface FoodListPresenter {
4 | fun getFoodList()
5 | fun detachView()
6 | }
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/java/com/hellohasan/mvp_architecture/feature/food_list/view/FoodListView.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvp_architecture.feature.food_list.view
2 |
3 | import com.hellohasan.mvp_architecture.feature.food_details.model.Food
4 |
5 | interface FoodListView {
6 | fun handleProgressBarVisibility(isVisible: Boolean)
7 | fun onFoodListFetchSuccess(foodList: MutableList)
8 | fun onFoodListFetchFailure(errorMessage: String)
9 | }
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/java/com/hellohasan/mvp_architecture/feature/food_list/view/ItemClickListener.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvp_architecture.feature.food_list.view
2 |
3 | interface ItemClickListener {
4 | fun onItemClicked(position: Int)
5 | }
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/res/drawable/food.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/09_MVP_Architecture/app/src/main/res/drawable/food.jpeg
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/res/drawable/ic_baseline_favorite_24.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/09_MVP_Architecture/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/09_MVP_Architecture/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/09_MVP_Architecture/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/09_MVP_Architecture/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/09_MVP_Architecture/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/09_MVP_Architecture/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/09_MVP_Architecture/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/09_MVP_Architecture/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/09_MVP_Architecture/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/09_MVP_Architecture/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 09_MVP_Architecture
3 | Food Details
4 | Price
5 | %d TK
6 | Food List
7 |
--------------------------------------------------------------------------------
/09_MVP_Architecture/app/src/test/java/com/hellohasan/mvp_architecture/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvp_architecture
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/09_MVP_Architecture/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/09_MVP_Architecture/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/09_MVP_Architecture/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Oct 24 17:20:21 BDT 2020
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-6.5-bin.zip
7 |
--------------------------------------------------------------------------------
/09_MVP_Architecture/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "09_MVP_Architecture"
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/java/com/hellohasan/post_auth/core/DataFetchCallback.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.post_auth.core
2 |
3 | interface DataFetchCallback {
4 | fun onSuccess(data: T)
5 | fun onError(throwable: Throwable)
6 | }
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/java/com/hellohasan/post_auth/feature/home/model/HomeModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.post_auth.feature.home.model
2 |
3 | interface HomeModel {
4 | fun getCourseInformation()
5 | }
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/java/com/hellohasan/post_auth/feature/home/model/HomeModelImpl.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.post_auth.feature.home.model
2 |
3 | class HomeModelImpl: HomeModel {
4 |
5 | override fun getCourseInformation() {
6 | TODO("Not yet implemented")
7 | }
8 | }
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/java/com/hellohasan/post_auth/feature/login/model/AuthModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.post_auth.feature.login.model
2 |
3 | import com.hellohasan.post_auth.core.DataFetchCallback
4 |
5 | interface AuthModel {
6 | fun login(userCredential: UserCredential, callback: DataFetchCallback)
7 | }
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/java/com/hellohasan/post_auth/feature/login/model/LoginResponse.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.post_auth.feature.login.model
2 |
3 |
4 | import com.google.gson.annotations.SerializedName
5 | import androidx.annotation.Keep
6 |
7 | @Keep
8 | data class LoginResponse(
9 | @SerializedName("message")
10 | val message: String?,
11 | @SerializedName("status")
12 | val status: Boolean?,
13 | @SerializedName("token")
14 | val token: String?
15 | )
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/java/com/hellohasan/post_auth/feature/login/model/UserCredential.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.post_auth.feature.login.model
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import java.io.Serializable
5 |
6 | data class UserCredential (
7 | @SerializedName("user_id") val userId: String,
8 | val password: String
9 | ): Serializable
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/java/com/hellohasan/post_auth/feature/student_list/model/StudentModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.post_auth.feature.student_list.model
2 |
3 | import com.hellohasan.post_auth.core.DataFetchCallback
4 |
5 | interface StudentModel {
6 | fun getStudentList(callback: DataFetchCallback)
7 | fun getStudentById(id: Int, callback: DataFetchCallback)
8 | }
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 10_Post_Request_Authentication_MVP_Architecture
3 | Food Details
4 | Price
5 | %d TK
6 | Food List
7 |
8 | VGhpcyBpcyBBUEkgS0VZIGluIGJhc2U2NCBmb3JtYXQ=
9 |
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/app/src/test/java/com/hellohasan/post_auth/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.post_auth
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/11_Post_Request_Authentication_MVP_Architecture/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Oct 24 17:20:21 BDT 2020
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-6.5-bin.zip
7 |
--------------------------------------------------------------------------------
/11_Post_Request_Authentication_MVP_Architecture/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "11_Post_Request_Authentication_MVP_Architecture"
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/java/com/hellohasan/fragment_navigation_drawer/core/DataFetchCallback.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.fragment_navigation_drawer.core
2 |
3 | interface DataFetchCallback {
4 | fun onSuccess(data: T)
5 | fun onError(throwable: Throwable)
6 | }
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/java/com/hellohasan/fragment_navigation_drawer/feature/home/model/HomeModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.fragment_navigation_drawer.feature.home.model
2 |
3 | import com.hellohasan.fragment_navigation_drawer.core.DataFetchCallback
4 |
5 | interface HomeModel {
6 | fun getCourseInformation(callback: DataFetchCallback)
7 | }
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/java/com/hellohasan/fragment_navigation_drawer/feature/home/presenter/HomePresenter.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.fragment_navigation_drawer.feature.home.presenter
2 |
3 | interface HomePresenter {
4 | fun getCourseInformation()
5 | }
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/java/com/hellohasan/fragment_navigation_drawer/feature/home/view/HomeView.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.fragment_navigation_drawer.feature.home.view
2 |
3 | import com.hellohasan.fragment_navigation_drawer.feature.home.model.CourseInfoResponse
4 |
5 | interface HomeView {
6 | fun setProgressBarVisibility(isVisible: Boolean)
7 | fun onDataFetchSuccess(data: CourseInfoResponse.Data)
8 | fun onDataFetchFailure(errorMessage: String)
9 | }
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/java/com/hellohasan/fragment_navigation_drawer/feature/login/model/AuthModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.fragment_navigation_drawer.feature.login.model
2 |
3 | import com.hellohasan.fragment_navigation_drawer.core.DataFetchCallback
4 |
5 | interface AuthModel {
6 | fun login(userCredential: UserCredential, callback: DataFetchCallback)
7 | }
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/java/com/hellohasan/fragment_navigation_drawer/feature/login/model/LoginResponse.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.fragment_navigation_drawer.feature.login.model
2 |
3 |
4 | import com.google.gson.annotations.SerializedName
5 | import androidx.annotation.Keep
6 |
7 | @Keep
8 | data class LoginResponse(
9 | @SerializedName("message")
10 | val message: String?,
11 | @SerializedName("status")
12 | val status: Boolean?,
13 | @SerializedName("token")
14 | val token: String?
15 | )
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/java/com/hellohasan/fragment_navigation_drawer/feature/login/model/UserCredential.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.fragment_navigation_drawer.feature.login.model
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import java.io.Serializable
5 |
6 | data class UserCredential (
7 | @SerializedName("user_id") val userId: String,
8 | val password: String
9 | ): Serializable
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/drawable/placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/12_Fragment_Navigation_Drawer/app/src/main/res/drawable/placeholder.png
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/drawable/side_nav_bar.xml:
--------------------------------------------------------------------------------
1 |
3 |
9 |
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/layout/fragment_login.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/menu/main.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/12_Fragment_Navigation_Drawer/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFBB86FC
4 | #FF6200EE
5 | #FF3700B3
6 | #FF03DAC5
7 | #FF018786
8 | #FF000000
9 | #FFFFFFFF
10 |
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 | 8dp
6 | 176dp
7 | 16dp
8 |
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/12_Fragment_Navigation_Drawer/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Nov 03 21:44:22 BDT 2020
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-6.5-bin.zip
7 |
--------------------------------------------------------------------------------
/12_Fragment_Navigation_Drawer/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "12_Fragment_Navigation_Drawer"
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/app/src/main/java/com/hellohasan/a13_activity_lifecycle_pull_refresh/SecondActivity.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.a13_activity_lifecycle_pull_refresh
2 |
3 | import androidx.appcompat.app.AppCompatActivity
4 | import android.os.Bundle
5 |
6 | class SecondActivity : AppCompatActivity() {
7 | override fun onCreate(savedInstanceState: Bundle?) {
8 | super.onCreate(savedInstanceState)
9 | setContentView(R.layout.activity_second)
10 | }
11 | }
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFBB86FC
4 | #FF6200EE
5 | #FF3700B3
6 | #FF03DAC5
7 | #FF018786
8 | #FF000000
9 | #FFFFFFFF
10 | #FF200F
11 |
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 13_Activity_LifeCycle_Pull_Refresh
3 |
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/13_Activity_LifeCycle_Pull_Refresh/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Nov 06 09:20:49 BDT 2020
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-6.5-bin.zip
7 |
--------------------------------------------------------------------------------
/13_Activity_LifeCycle_Pull_Refresh/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "13_Activity_LifeCycle_Pull_Refresh"
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 | secure.properties
11 |
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/README.md:
--------------------------------------------------------------------------------
1 | # Google Map Sample
2 |
3 | ## Project setup
4 | Create a `secure.properties` file in the root directory of project. In that file add your Google Map API key in this format:
5 |
6 | ```
7 | MAPS_API_KEY=YOUR-OWN-MAP-API-KEY
8 | ```
9 |
10 | Get your Map API key from [here](https://developers.google.com/maps/documentation/android-sdk/get-api-key).
11 |
12 | Now your project is setup!
13 | Build, run & enjoy!
14 |
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/java/com/hellohasan/google_map/core/Constants.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.google_map.core
2 |
3 | const val LATITUDE = "latitude"
4 | const val LONGITUDE = "longitude"
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/java/com/hellohasan/google_map/core/DataFetchCallback.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.google_map.core
2 |
3 | interface DataFetchCallback {
4 | fun onSuccess(data: T)
5 | fun onError(throwable: Throwable)
6 | }
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/java/com/hellohasan/google_map/core/Utils.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.google_map.core
2 |
3 | import android.location.Location
4 | import com.hellohasan.google_map.feature.home.model.LocationData
5 |
6 | fun Location.toLocationData() : LocationData {
7 | return LocationData(latitude, this.longitude)
8 | }
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/java/com/hellohasan/google_map/feature/home/model/LocationData.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.google_map.feature.home.model
2 |
3 | data class LocationData (
4 | val latitude: Double,
5 | val longitude: Double
6 | )
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/java/com/hellohasan/google_map/feature/home/model/MainActivityModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.google_map.feature.home.model
2 |
3 | import android.location.Location
4 | import com.hellohasan.google_map.core.DataFetchCallback
5 |
6 | interface MainActivityModel {
7 | fun getCurrentLocation(callback: DataFetchCallback)
8 | }
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/java/com/hellohasan/google_map/feature/home/presenter/MainActivityPresenter.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.google_map.feature.home.presenter
2 |
3 | interface MainActivityPresenter {
4 | fun getCurrentLocation()
5 | fun detachView()
6 | }
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/java/com/hellohasan/google_map/feature/home/view/MainActivityView.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.google_map.feature.home.view
2 |
3 | import com.hellohasan.google_map.feature.home.model.LocationData
4 |
5 | interface MainActivityView {
6 | fun onLocationFetchSuccess(locationData: LocationData)
7 | fun onLocationError(errorMessage: String)
8 | }
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/res/layout/activity_maps.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/14_GPS_Location_Map_Data_Binding/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFBB86FC
4 | #FF6200EE
5 | #FF3700B3
6 | #FF03DAC5
7 | #FF018786
8 | #FF000000
9 | #FFFFFFFF
10 |
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 14_GPS_Location_Map_Data_Binding
3 | Map
4 |
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/app/src/test/java/com/hellohasan/google_map/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.google_map
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/14_GPS_Location_Map_Data_Binding/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Nov 13 08:07:36 BDT 2020
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-6.5-all.zip
7 |
--------------------------------------------------------------------------------
/14_GPS_Location_Map_Data_Binding/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "14_GPS_Location_Map_Data_Binding"
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/java/com/hellohasan/mvvm_food_app/core/DataFetchCallback.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_food_app.core
2 |
3 | interface DataFetchCallback {
4 | fun onSuccess(data : T)
5 | fun onError(throwable: Throwable)
6 | }
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/java/com/hellohasan/mvvm_food_app/core/ListItemClickListener.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_food_app.core
2 |
3 | interface ListItemClickListener {
4 | fun onItemClicked(position: Int)
5 | }
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/java/com/hellohasan/mvvm_food_app/feature/food_details/model/FoodCallback.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_food_app.feature.food_details.model
2 |
3 | interface FoodCallback {
4 | fun onSuccess(food: Food)
5 | fun onError(errorMessage: Throwable)
6 | }
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/java/com/hellohasan/mvvm_food_app/feature/food_details/model/FoodDetailsModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_food_app.feature.food_details.model
2 |
3 | import com.hellohasan.mvvm_food_app.core.DataFetchCallback
4 |
5 | interface FoodDetailsModel {
6 | fun getFoodDetails(callback: DataFetchCallback)
7 | }
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/java/com/hellohasan/mvvm_food_app/feature/food_list/model/FoodListModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_food_app.feature.food_list.model
2 |
3 | import com.hellohasan.mvvm_food_app.core.DataFetchCallback
4 | import com.hellohasan.mvvm_food_app.feature.food_details.model.Food
5 |
6 | interface FoodListModel {
7 | fun getFoodList(callback: DataFetchCallback>)
8 | }
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/res/drawable/food.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/15_Android_MVVM_Architecture/app/src/main/res/drawable/food.jpeg
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/15_Android_MVVM_Architecture/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/15_Android_MVVM_Architecture/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/15_Android_MVVM_Architecture/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/15_Android_MVVM_Architecture/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/15_Android_MVVM_Architecture/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/15_Android_MVVM_Architecture/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/15_Android_MVVM_Architecture/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/15_Android_MVVM_Architecture/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/15_Android_MVVM_Architecture/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/15_Android_MVVM_Architecture/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 15_Android_MVVM_Architecture
3 | Food Details
4 | Price
5 | %d TK
6 | Food List
7 |
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/app/src/test/java/com/hellohasan/mvvm_food_app/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_food_app
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/15_Android_MVVM_Architecture/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Oct 24 17:20:21 BDT 2020
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-6.5-bin.zip
7 |
--------------------------------------------------------------------------------
/15_Android_MVVM_Architecture/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "15_Android_MVVM_Architecture"
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/java/com/hellohasan/sqlite/core/DataFetchCallback.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.sqlite.core
2 |
3 | interface DataFetchCallback {
4 | fun onSuccess(data : T)
5 | fun onError(throwable: Throwable)
6 | }
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/java/com/hellohasan/sqlite/core/ListItemClickListener.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.sqlite.core
2 |
3 | interface ListItemClickListener {
4 | fun onItemClicked(position: Int)
5 | }
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/java/com/hellohasan/sqlite/data/db/StudentDataSetChangeListener.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.sqlite.data.db
2 |
3 | interface StudentDataSetChangeListener {
4 | fun onStudentDataChanged()
5 | fun onStudentDataSetChangeError(error: String)
6 | }
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/java/com/hellohasan/sqlite/data/model/student/Student.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.sqlite.data.model.student
2 |
3 | data class Student(
4 | var id: Long = -1L,
5 | val name: String,
6 | val registrationNumber: Long,
7 | val phoneNumber: String,
8 | val email: String
9 | )
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/java/com/hellohasan/sqlite/ui/student_update/viewmodel/StudentUpdateViewModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.sqlite.ui.student_update.viewmodel
2 |
3 | import androidx.lifecycle.ViewModel
4 | import com.hellohasan.sqlite.data.model.student.Student
5 | import com.hellohasan.sqlite.data.model.student.StudentModel
6 |
7 | class StudentUpdateViewModel(private val model: StudentModel): ViewModel() {
8 |
9 | fun updateStudentRecord(student: Student) {
10 |
11 | }
12 | }
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/res/drawable/food.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/16_SQLite_Db_Dialog_Fragment/app/src/main/res/drawable/food.jpeg
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/res/drawable/ic_baseline_delete_24.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/16_SQLite_Db_Dialog_Fragment/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/app/src/test/java/com/hellohasan/sqlite/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.sqlite
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/16_SQLite_Db_Dialog_Fragment/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Oct 24 17:20:21 BDT 2020
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-6.5-bin.zip
7 |
--------------------------------------------------------------------------------
/16_SQLite_Db_Dialog_Fragment/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "16_SQLite_Db_Dialog_Fragment"
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/java/com/hellohasan/android_firebase_notification/analytics/AppAnalytics.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.android_firebase_notification.analytics
2 |
3 | import android.os.Bundle
4 |
5 | interface AppAnalytics {
6 | fun logEvent(eventName: String, bundle: Bundle)
7 | }
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/java/com/hellohasan/android_firebase_notification/notification/NotificationConfig.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.android_firebase_notification.notification
2 |
3 | // global topic to receive app wide push notifications
4 | val TOPIC_GLOBAL = "global" // news, politics, sport
5 |
6 | // id to handle the notification in the notification tray
7 | const val NOTIFICATION_ID = 100
8 | const val NOTIFICATION_ID_BIG_IMAGE = 101
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/res/drawable/image_placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/17_Firebase_Push_Analytics/app/src/main/res/drawable/image_placeholder.png
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/17_Firebase_Push_Analytics/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/17_Firebase_Push_Analytics/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/17_Firebase_Push_Analytics/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/17_Firebase_Push_Analytics/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/17_Firebase_Push_Analytics/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/17_Firebase_Push_Analytics/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/17_Firebase_Push_Analytics/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/17_Firebase_Push_Analytics/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/17_Firebase_Push_Analytics/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/17_Firebase_Push_Analytics/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFBB86FC
4 | #FF6200EE
5 | #FF3700B3
6 | #FF03DAC5
7 | #FF018786
8 | #FF000000
9 | #FFFFFFFF
10 |
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 17_Firebase_Push_Analytics
3 | Subscribe Global Topic
4 | Notification Details
5 |
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/17_Firebase_Push_Analytics/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Nov 28 08:48:38 BDT 2020
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-6.5-bin.zip
7 |
--------------------------------------------------------------------------------
/17_Firebase_Push_Analytics/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "17_Firebase_Push_Analytics"
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/java/com/hellohasan/room_orm/core/DataFetchCallback.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.room_orm.core
2 |
3 | interface DataFetchCallback {
4 | fun onSuccess(data : T)
5 | fun onError(throwable: Throwable)
6 | }
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/java/com/hellohasan/room_orm/core/ListItemClickListener.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.room_orm.core
2 |
3 | interface ListItemClickListener {
4 | fun onItemClicked(position: Int)
5 | }
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/java/com/hellohasan/room_orm/data/local/StudentDataSetChangeListener.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.room_orm.data.local
2 |
3 | interface StudentDataSetChangeListener {
4 | fun onStudentDataChanged()
5 | fun onStudentDataSetChangeError(error: String)
6 | }
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/res/drawable/food.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/18_Room_Coroutines_ViewBinding/app/src/main/res/drawable/food.jpeg
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/res/drawable/ic_baseline_delete_24.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/18_Room_Coroutines_ViewBinding/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/app/src/test/java/com/hellohasan/room_orm/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.room_orm
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/18_Room_Coroutines_ViewBinding/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Oct 24 17:20:21 BDT 2020
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-6.5-bin.zip
7 |
--------------------------------------------------------------------------------
/18_Room_Coroutines_ViewBinding/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "18_Room_Coroutines_ViewBinding"
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/main/java/com/hellohasan/mediaplayer_service/Const.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mediaplayer_service
2 |
3 | const val ONGOING_NOTIFICATION_ID = 10393
4 | const val ACTION_PLAY: String = "com.hellohasan.action.PLAY"
5 | const val ACTION_PAUSE: String = "com.hellohasan.action.PAUSE"
6 | const val ACTION_RESUME: String = "com.hellohasan.action.RESUME"
7 | const val ACTION_STOP: String = "com.hellohasan.action.STOP"
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/19_MediaPlayer_Service/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/19_MediaPlayer_Service/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/19_MediaPlayer_Service/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/19_MediaPlayer_Service/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/19_MediaPlayer_Service/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/19_MediaPlayer_Service/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/19_MediaPlayer_Service/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/19_MediaPlayer_Service/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/19_MediaPlayer_Service/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/19_MediaPlayer_Service/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/main/res/raw/audio.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/19_MediaPlayer_Service/app/src/main/res/raw/audio.mp3
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFBB86FC
4 | #FF6200EE
5 | #FF3700B3
6 | #FF03DAC5
7 | #FF018786
8 | #FF000000
9 | #FFFFFFFF
10 |
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 19_MediaPlayer_Service
3 |
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/app/src/test/java/com/hellohasan/mediaplayer_service/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mediaplayer_service
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/19_MediaPlayer_Service/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Dec 12 12:40:12 BDT 2020
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-6.5-bin.zip
7 |
--------------------------------------------------------------------------------
/19_MediaPlayer_Service/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "19_MediaPlayer_Service"
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/java/com/hellohasan/room_orm/core/DataFetchCallback.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.room_orm.core
2 |
3 | interface DataFetchCallback {
4 | fun onSuccess(data : T)
5 | fun onError(throwable: Throwable)
6 | }
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/java/com/hellohasan/room_orm/core/ListItemClickListener.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.room_orm.core
2 |
3 | interface ListItemClickListener {
4 | fun onItemClicked(position: Int)
5 | }
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/java/com/hellohasan/room_orm/data/local/db/student/StudentDataSetChangeListener.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.room_orm.data.local.db.student
2 |
3 | interface StudentDataSetChangeListener {
4 | fun onStudentDataChanged()
5 | fun onStudentDataSetChangeError(error: String)
6 | }
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/java/com/hellohasan/room_orm/data/remote/ip_info/IpInfoRemoteSource.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.room_orm.data.remote.ip_info
2 |
3 | import com.hellohasan.room_orm.core.DataFetchCallback
4 | import com.hellohasan.room_orm.data.repository.client_ip.IpInfo
5 |
6 | interface IpInfoRemoteSource {
7 | fun getIpInfo(callback: DataFetchCallback)
8 | }
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/java/com/hellohasan/room_orm/data/remote/ip_info/IpInfoRetrofitInterface.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.room_orm.data.remote.ip_info
2 |
3 | import com.hellohasan.room_orm.data.repository.client_ip.IpInfo
4 | import retrofit2.Call
5 | import retrofit2.http.GET
6 |
7 | interface IpInfoRetrofitInterface {
8 |
9 | @GET("client-ip")
10 | fun getClientIp(): Call
11 | }
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/java/com/hellohasan/room_orm/data/repository/client_ip/IpInfoRepository.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.room_orm.data.repository.client_ip
2 |
3 | import com.hellohasan.room_orm.core.DataFetchCallback
4 |
5 | interface IpInfoRepository {
6 | fun getClientInfo(callback: DataFetchCallback)
7 | }
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/drawable/food.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/20_MVVM_With_Repository/app/src/main/res/drawable/food.jpeg
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/drawable/ic_baseline_delete_24.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/layout/fragment_student_update.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/layout/fragment_subject_create_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/layout/fragment_subject_update_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/20_MVVM_With_Repository/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/20_MVVM_With_Repository/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/20_MVVM_With_Repository/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/20_MVVM_With_Repository/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/20_MVVM_With_Repository/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/20_MVVM_With_Repository/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/20_MVVM_With_Repository/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/20_MVVM_With_Repository/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/20_MVVM_With_Repository/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/20_MVVM_With_Repository/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/app/src/test/java/com/hellohasan/room_orm/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.room_orm
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/20_MVVM_With_Repository/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Oct 24 17:20:21 BDT 2020
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-6.5-bin.zip
7 |
--------------------------------------------------------------------------------
/20_MVVM_With_Repository/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "20_MVVM_With_Repository"
--------------------------------------------------------------------------------
/21_MVVM_Dagger/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 | .cxx
10 |
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/java/com/hellohasan/mvvm_dagger/core/BaseViewModel.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_dagger.core
2 |
3 | import androidx.lifecycle.ViewModel
4 | import javax.inject.Inject
5 |
6 | open class BaseViewModel @Inject constructor() : ViewModel() {
7 |
8 | }
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/java/com/hellohasan/mvvm_dagger/core/DataFetchCallback.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_dagger.core
2 |
3 | interface DataFetchCallback {
4 | fun onSuccess(data : T)
5 | fun onError(throwable: Throwable)
6 | }
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/java/com/hellohasan/mvvm_dagger/core/ListItemClickListener.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_dagger.core
2 |
3 | interface ListItemClickListener {
4 | fun onItemClicked(position: Int)
5 | }
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/java/com/hellohasan/mvvm_dagger/data/local/db/student/StudentDataSetChangeListener.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_dagger.data.local.db.student
2 |
3 | interface StudentDataSetChangeListener {
4 | fun onStudentDataChanged()
5 | fun onStudentDataSetChangeError(error: String)
6 | }
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/java/com/hellohasan/mvvm_dagger/data/remote/ip_info/IpInfoRemoteSource.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_dagger.data.remote.ip_info
2 |
3 | import com.hellohasan.mvvm_dagger.core.DataFetchCallback
4 | import com.hellohasan.mvvm_dagger.data.repository.client_ip.IpInfo
5 |
6 | interface IpInfoRemoteSource {
7 | fun getIpInfo(callback: DataFetchCallback)
8 | }
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/java/com/hellohasan/mvvm_dagger/data/remote/ip_info/IpInfoRetrofitInterface.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_dagger.data.remote.ip_info
2 |
3 | import com.hellohasan.mvvm_dagger.data.repository.client_ip.IpInfo
4 | import retrofit2.Call
5 | import retrofit2.http.GET
6 |
7 | interface IpInfoRetrofitInterface {
8 |
9 | @GET("client-ip")
10 | fun getClientIp(): Call
11 | }
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/java/com/hellohasan/mvvm_dagger/data/repository/client_ip/IpInfoRepository.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_dagger.data.repository.client_ip
2 |
3 | import com.hellohasan.mvvm_dagger.core.DataFetchCallback
4 |
5 | interface IpInfoRepository {
6 | fun getClientInfo(callback: DataFetchCallback)
7 | }
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/java/com/hellohasan/mvvm_dagger/di/annotation/Qualifire.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_dagger.di.annotation
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class ApplicationContext
8 |
9 | @Qualifier
10 | @Retention(AnnotationRetention.RUNTIME)
11 | annotation class ActivityContext
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/java/com/hellohasan/mvvm_dagger/di/annotation/Scope.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_dagger.di.annotation
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @kotlin.annotation.Retention
7 | annotation class ActivityScope
8 |
9 | @Scope
10 | @kotlin.annotation.Retention
11 | annotation class FragmentScope
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/java/com/hellohasan/mvvm_dagger/di/annotation/ViewModelKey.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_dagger.di.annotation
2 |
3 | import androidx.lifecycle.ViewModel
4 | import dagger.MapKey
5 | import kotlin.reflect.KClass
6 |
7 | @Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)
8 | @MapKey
9 | annotation class ViewModelKey(val value: KClass)
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/drawable/food.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/21_MVVM_Dagger/app/src/main/res/drawable/food.jpeg
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/drawable/ic_baseline_delete_24.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/drawable/ic_baseline_favorite_24.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/layout/fragment_student_update.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/layout/fragment_subject_create_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/layout/fragment_subject_update_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/21_MVVM_Dagger/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/21_MVVM_Dagger/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/21_MVVM_Dagger/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/21_MVVM_Dagger/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/21_MVVM_Dagger/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/21_MVVM_Dagger/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/21_MVVM_Dagger/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/21_MVVM_Dagger/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/21_MVVM_Dagger/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/21_MVVM_Dagger/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/21_MVVM_Dagger/app/src/test/java/com/hellohasan/mvvm_dagger/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.hellohasan.mvvm_dagger
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/21_MVVM_Dagger/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasancse91/android-course-v2/89c245c45007e076eacf927aa17c7698e660d0db/21_MVVM_Dagger/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/21_MVVM_Dagger/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Oct 24 17:20:21 BDT 2020
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-6.5-bin.zip
7 |
--------------------------------------------------------------------------------
/21_MVVM_Dagger/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "21_MVVM_Dagger"
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # android-course-v2
2 | Source code of my online Android App Development course. Course details here: https://hellohasan.com/android-course-bangladesh/
3 |
--------------------------------------------------------------------------------