├── .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 | 4 | 9 | -------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------