Directory structure:
└── keepseung-android-blog-source/
├── README.md
├── LICENSE
├── appupdate-check/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── appupdate_check/
│ │ │ └── ExampleInstrumentedTest.java
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── appupdate_check/
│ │ │ │ └── MainActivity.java
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── appupdate_check/
│ │ └── ExampleUnitTest.java
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── DatabindingEx/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── databindingex/
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── databindingex/
│ │ │ │ ├── MainActivity.kt
│ │ │ │ └── Person.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ └── values-night/
│ │ │ └── themes.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── databindingex/
│ │ └── ExampleUnitTest.kt
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── GalleryApp/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── galleryapp/
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── galleryapp/
│ │ │ │ ├── GalleryApp.kt
│ │ │ │ ├── MainActivity.kt
│ │ │ │ ├── adapter/
│ │ │ │ │ ├── GalleryPhotoListAdapter.kt
│ │ │ │ │ ├── GallerySinglePhotoListAdapter.kt
│ │ │ │ │ ├── GridDividerDecoration.kt
│ │ │ │ │ └── PhotoListAdapter.kt
│ │ │ │ ├── extensions/
│ │ │ │ │ ├── FloatExtensions.kt
│ │ │ │ │ └── ImageViewExtensions.kt
│ │ │ │ └── gallery/
│ │ │ │ ├── GalleryActivity.kt
│ │ │ │ ├── GalleryPhoto.kt
│ │ │ │ ├── GalleryPhotoRepository.kt
│ │ │ │ ├── GalleryState.kt
│ │ │ │ ├── GalleryViewModel.kt
│ │ │ │ └── SingleImageGalleryActivity.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ ├── bg_frame_gallery.xml
│ │ │ │ ├── bg_round_corner_8_black.xml
│ │ │ │ ├── ic_check_disabled.xml
│ │ │ │ ├── ic_check_enabled.xml
│ │ │ │ ├── ic_close.xml
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ ├── activity_gallery.xml
│ │ │ │ ├── activity_main.xml
│ │ │ │ ├── activity_single_image_gallery.xml
│ │ │ │ ├── viewholder_gallery_photo_item.xml
│ │ │ │ └── viewholder_photo_item.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── galleryapp/
│ │ └── ExampleUnitTest.kt
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── googlelogin/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── googlelogin/
│ │ │ └── ExampleInstrumentedTest.java
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── googlelogin/
│ │ │ │ └── MainActivity.java
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ └── values-night/
│ │ │ └── themes.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── googlelogin/
│ │ └── ExampleUnitTest.java
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── kakaologin/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── kakaologin/
│ │ │ └── ExampleInstrumentedTest.java
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── kakaologin/
│ │ │ │ ├── GlobalApplication.java
│ │ │ │ ├── MainActivity.java
│ │ │ │ └── SessionCallback.java
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ └── values-night/
│ │ │ └── themes.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── kakaologin/
│ │ └── ExampleUnitTest.java
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── LiveDataDataBinding/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── keepseung/
│ │ │ └── livedatadatabinding/
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── keepseung/
│ │ │ │ └── livedatadatabinding/
│ │ │ │ ├── MainActivity.kt
│ │ │ │ └── MainActivityViewModel.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── keepseung/
│ │ └── livedatadatabinding/
│ │ └── ExampleUnitTest.kt
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── LivedataEx/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── livedataex/
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── livedataex/
│ │ │ │ ├── MainActivity.kt
│ │ │ │ ├── MainActivityViewModel.kt
│ │ │ │ └── MainActivityViewModelFactory.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ └── values-night/
│ │ │ └── themes.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── livedataex/
│ │ └── ExampleUnitTest.kt
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── LoadingAnimation/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── co/
│ │ │ └── kr/
│ │ │ └── loadinganimation/
│ │ │ └── ExampleInstrumentedTest.java
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── co/
│ │ │ │ └── kr/
│ │ │ │ └── loadinganimation/
│ │ │ │ ├── LoadingAnimationListener.java
│ │ │ │ ├── MainActivity.java
│ │ │ │ └── ViewAnimationListener.java
│ │ │ └── res/
│ │ │ ├── anim/
│ │ │ │ ├── fade_in.xml
│ │ │ │ └── fade_out.xml
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ ├── anim_loading.xml
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ ├── activity_main.xml
│ │ │ │ └── view_loading.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test/
│ │ └── java/
│ │ └── co/
│ │ └── kr/
│ │ └── loadinganimation/
│ │ └── ExampleUnitTest.java
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── NavFinal/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── keepseung/
│ │ │ └── navdemo/
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── keepseung/
│ │ │ │ └── navdemo/
│ │ │ │ ├── EmailFragment.kt
│ │ │ │ ├── HomeFragment.kt
│ │ │ │ ├── MainActivity.kt
│ │ │ │ ├── NameFragment.kt
│ │ │ │ ├── TermsFragment.kt
│ │ │ │ └── WelcomeFragment.kt
│ │ │ └── res/
│ │ │ ├── anim/
│ │ │ │ ├── hyperspace_jump.xml
│ │ │ │ ├── push_down_in.xml
│ │ │ │ ├── push_down_out.xml
│ │ │ │ ├── push_up_in.xml
│ │ │ │ ├── push_up_out.xml
│ │ │ │ ├── slide_in_left.xml
│ │ │ │ ├── slide_in_right.xml
│ │ │ │ ├── slide_out_left.xml
│ │ │ │ └── slide_out_right.xml
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ ├── activity_main.xml
│ │ │ │ ├── fragment_email.xml
│ │ │ │ ├── fragment_home.xml
│ │ │ │ ├── fragment_name.xml
│ │ │ │ ├── fragment_terms.xml
│ │ │ │ └── fragment_welcome.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── navigation/
│ │ │ │ └── nav_graph.xml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── keepseung/
│ │ └── navdemo/
│ │ └── ExampleUnitTest.kt
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── network-check/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── network_check/
│ │ │ └── ExampleInstrumentedTest.java
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── network_check/
│ │ │ │ └── MainActivity.java
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── network_check/
│ │ └── ExampleUnitTest.java
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── Notification/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── co/
│ │ │ └── kr/
│ │ │ └── notification/
│ │ │ └── ExampleInstrumentedTest.java
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── co/
│ │ │ │ └── kr/
│ │ │ │ └── notification/
│ │ │ │ └── MainActivity.java
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test/
│ │ └── java/
│ │ └── co/
│ │ └── kr/
│ │ └── notification/
│ │ └── ExampleUnitTest.java
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── permission-check/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── permission_check/
│ │ │ └── ExampleInstrumentedTest.java
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── permission_check/
│ │ │ │ └── MainActivity.java
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ └── values-night/
│ │ │ └── themes.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── permission_check/
│ │ └── ExampleUnitTest.java
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── PermissionRequest/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── permissionrequest/
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── permissionrequest/
│ │ │ │ └── MainActivity.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ └── values-night/
│ │ │ └── themes.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── permissionrequest/
│ │ └── ExampleUnitTest.kt
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── phoneNum/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── phonenum/
│ │ │ └── ExampleInstrumentedTest.java
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── phonenum/
│ │ │ │ └── MainActivity.java
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ └── values-night/
│ │ │ └── themes.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── phonenum/
│ │ └── ExampleUnitTest.java
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── RecoderApp/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── recoderapp/
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── recoderapp/
│ │ │ │ └── MainActivity.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ └── values-night/
│ │ │ └── themes.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── recoderapp/
│ │ └── ExampleUnitTest.kt
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── RecyclerViewDemo1/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── keepseung/
│ │ │ └── recyclerviewdemo1/
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── keepseung/
│ │ │ │ └── recyclerviewdemo1/
│ │ │ │ ├── Fruit.kt
│ │ │ │ ├── MainActivity.kt
│ │ │ │ └── MyRecyclerViewAdapter.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ ├── activity_main.xml
│ │ │ │ └── list_item.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ └── values-night/
│ │ │ └── themes.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── keepseung/
│ │ └── recyclerviewdemo1/
│ │ └── ExampleUnitTest.kt
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── RecyclerviewHeaderFooter/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── co/
│ │ │ └── kr/
│ │ │ └── recyclerviewheaderfooter/
│ │ │ └── ExampleInstrumentedTest.java
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── co/
│ │ │ │ └── kr/
│ │ │ │ └── recyclerviewheaderfooter/
│ │ │ │ ├── MainActivity.java
│ │ │ │ ├── Person.java
│ │ │ │ └── RecyclerAdapter.java
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ ├── activity_main.xml
│ │ │ │ ├── footer.xml
│ │ │ │ ├── header.xml
│ │ │ │ └── item.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test/
│ │ └── java/
│ │ └── co/
│ │ └── kr/
│ │ └── recyclerviewheaderfooter/
│ │ └── ExampleUnitTest.java
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── roundview/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── co/
│ │ │ └── kr/
│ │ │ └── roundview/
│ │ │ └── ExampleInstrumentedTest.java
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── co/
│ │ │ │ └── kr/
│ │ │ │ └── roundview/
│ │ │ │ └── MainActivity.java
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ └── round.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test/
│ │ └── java/
│ │ └── co/
│ │ └── kr/
│ │ └── roundview/
│ │ └── ExampleUnitTest.java
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── timer/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── timer/
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── timer/
│ │ │ │ └── MainActivity.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ ├── drawable_tick_mark.xml
│ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ └── ic_thumb.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── timer/
│ │ └── ExampleUnitTest.kt
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── TwoWayBingingEx/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── twowaybinding/
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── twowaybinding/
│ │ │ │ ├── MainActivity.kt
│ │ │ │ ├── MainActivityViewModel.kt
│ │ │ │ └── MainActivityViewModelFactory.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ └── values-night/
│ │ │ └── themes.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── twowaybinding/
│ │ └── ExampleUnitTest.kt
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── ViewModelDataBinding/
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── app/
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── keepseung/
│ │ │ └── viewmodeldatabinding/
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── keepseung/
│ │ │ │ └── viewmodeldatabinding/
│ │ │ │ ├── MainActivity.kt
│ │ │ │ ├── MainActivityViewModel.kt
│ │ │ │ └── MainActivityViewModelFactory.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ └── values-night/
│ │ │ └── themes.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── keepseung/
│ │ └── viewmodeldatabinding/
│ │ └── ExampleUnitTest.kt
│ └── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
└── ViewModelDemo/
├── gradle.properties
├── gradlew
├── gradlew.bat
├── app/
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── viewmodeldemo/
│ │ └── ExampleInstrumentedTest.kt
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── viewmodeldemo/
│ │ │ ├── MainActivity.kt
│ │ │ ├── MainActivityViewModel.kt
│ │ │ └── MainActivityViewModelFactory.kt
│ │ └── res/
│ │ ├── drawable/
│ │ │ └── ic_launcher_background.xml
│ │ ├── drawable-v24/
│ │ │ └── ic_launcher_foreground.xml
│ │ ├── layout/
│ │ │ └── activity_main.xml
│ │ ├── mipmap-anydpi-v26/
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── values-night/
│ │ └── themes.xml
│ └── test/
│ └── java/
│ └── com/
│ └── example/
│ └── viewmodeldemo/
│ └── ExampleUnitTest.kt
└── gradle/
└── wrapper/
└── gradle-wrapper.properties