From c007aae6d85caf8976c36816fdbfe451219f0731 Mon Sep 17 00:00:00 2001 From: anwarshahriar Date: Wed, 11 Apr 2018 00:51:38 +0600 Subject: [PATCH 1/2] Fix issue #2 Property 'popularity' of ProfileObservableFieldsViewModel was set as a wrong value --- .../basicsample/data/ProfileObservableViewModel.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/BasicSample/app/src/main/java/com/example/android/databinding/basicsample/data/ProfileObservableViewModel.kt b/BasicSample/app/src/main/java/com/example/android/databinding/basicsample/data/ProfileObservableViewModel.kt index 22fc7d0..5518db0 100644 --- a/BasicSample/app/src/main/java/com/example/android/databinding/basicsample/data/ProfileObservableViewModel.kt +++ b/BasicSample/app/src/main/java/com/example/android/databinding/basicsample/data/ProfileObservableViewModel.kt @@ -70,9 +70,11 @@ class ProfileObservableFieldsViewModel : ViewModel() { likes.set(likes.get() + 1) popularity.set(likes.get().let { - if (it > 9) Popularity.STAR - if (it > 4) Popularity.POPULAR - Popularity.NORMAL + when { + it > 9 -> Popularity.STAR + it > 4 -> Popularity.POPULAR + else -> Popularity.NORMAL + } }) } } From 8fe709f2a082e6208b05ef42b998b1a6fd8e5bb5 Mon Sep 17 00:00:00 2001 From: anwarshahriar Date: Wed, 11 Apr 2018 01:24:14 +0600 Subject: [PATCH 2/2] Moved Popularity decision logic to remove duplicacy --- .../data/ProfileObservableViewModel.kt | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/BasicSample/app/src/main/java/com/example/android/databinding/basicsample/data/ProfileObservableViewModel.kt b/BasicSample/app/src/main/java/com/example/android/databinding/basicsample/data/ProfileObservableViewModel.kt index 5518db0..4255bc5 100644 --- a/BasicSample/app/src/main/java/com/example/android/databinding/basicsample/data/ProfileObservableViewModel.kt +++ b/BasicSample/app/src/main/java/com/example/android/databinding/basicsample/data/ProfileObservableViewModel.kt @@ -43,13 +43,7 @@ class ProfileObservableViewModel : ObservableViewModel() { @Bindable fun getPopularity(): Popularity { - return likes.get().let { - when { - it > 9 -> Popularity.STAR - it > 4 -> Popularity.POPULAR - else -> Popularity.NORMAL - } - } + return likes.get().let { decidePopularity(it) } } } @@ -69,13 +63,9 @@ class ProfileObservableFieldsViewModel : ViewModel() { fun onLike() { likes.set(likes.get() + 1) - popularity.set(likes.get().let { - when { - it > 9 -> Popularity.STAR - it > 4 -> Popularity.POPULAR - else -> Popularity.NORMAL - } - }) + popularity.set( + likes.get().let { decidePopularity(it) } + ) } } @@ -88,3 +78,11 @@ enum class Popularity { private fun ObservableInt.increment() { set(get() + 1) } + +private fun decidePopularity(likes: Int) : Popularity { + return when { + likes > 9 -> Popularity.STAR + likes > 4 -> Popularity.POPULAR + else -> Popularity.NORMAL + } +} \ No newline at end of file