From 2585e41b9f6217b0728f8da6ba6c3b36d3993e64 Mon Sep 17 00:00:00 2001 From: Aksenov Vladimir Date: Fri, 5 Jul 2019 16:44:56 +0300 Subject: [PATCH 1/2] Added recycler onChange observer with extension --- .../java/ru/touchin/extensions/RecyclerView.kt | 9 +++++++++ .../ru/touchin/adapters/SimpleDataObserver.kt | 17 +++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 kotlin-extensions/src/main/java/ru/touchin/extensions/RecyclerView.kt create mode 100644 recyclerview-adapters/src/main/java/ru/touchin/adapters/SimpleDataObserver.kt diff --git a/kotlin-extensions/src/main/java/ru/touchin/extensions/RecyclerView.kt b/kotlin-extensions/src/main/java/ru/touchin/extensions/RecyclerView.kt new file mode 100644 index 0000000..e78cf55 --- /dev/null +++ b/kotlin-extensions/src/main/java/ru/touchin/extensions/RecyclerView.kt @@ -0,0 +1,9 @@ +package ru.touchin.extensions + +import androidx.recyclerview.widget.RecyclerView + +fun RecyclerView.Adapter.onDataUpdatedAndDrawn(onChanged: () -> Unit) = registerAdapterDataObserver( + object : SimpleDataObserver() { + override fun onChange() = onChanged() + } +) diff --git a/recyclerview-adapters/src/main/java/ru/touchin/adapters/SimpleDataObserver.kt b/recyclerview-adapters/src/main/java/ru/touchin/adapters/SimpleDataObserver.kt new file mode 100644 index 0000000..ac9792e --- /dev/null +++ b/recyclerview-adapters/src/main/java/ru/touchin/adapters/SimpleDataObserver.kt @@ -0,0 +1,17 @@ +package ru.touchin.adapters + +import androidx.recyclerview.widget.RecyclerView + +abstract class SimpleDataObserver : RecyclerView.AdapterDataObserver() { + + abstract fun onChange() + + override fun onItemRangeChanged(positionStart: Int, itemCount: Int) = onChange() + + override fun onItemRangeInserted(positionStart: Int, itemCount: Int) = onChange() + + override fun onItemRangeRemoved(positionStart: Int, itemCount: Int) = onChange() + + override fun onItemRangeMoved(fromPosition: Int, toPosition: Int, itemCount: Int) = onChange() + +} From 7ca93645c655db140ccf1096ea3b63ec500ff7a6 Mon Sep 17 00:00:00 2001 From: Aksenov Vladimir Date: Fri, 5 Jul 2019 16:52:35 +0300 Subject: [PATCH 2/2] Fixed consistency --- .../src/main/java/ru/touchin/extensions/RecyclerView.kt | 9 --------- .../main/java/ru/touchin/adapters/SimpleDataObserver.kt | 6 ++++++ 2 files changed, 6 insertions(+), 9 deletions(-) delete mode 100644 kotlin-extensions/src/main/java/ru/touchin/extensions/RecyclerView.kt diff --git a/kotlin-extensions/src/main/java/ru/touchin/extensions/RecyclerView.kt b/kotlin-extensions/src/main/java/ru/touchin/extensions/RecyclerView.kt deleted file mode 100644 index e78cf55..0000000 --- a/kotlin-extensions/src/main/java/ru/touchin/extensions/RecyclerView.kt +++ /dev/null @@ -1,9 +0,0 @@ -package ru.touchin.extensions - -import androidx.recyclerview.widget.RecyclerView - -fun RecyclerView.Adapter.onDataUpdatedAndDrawn(onChanged: () -> Unit) = registerAdapterDataObserver( - object : SimpleDataObserver() { - override fun onChange() = onChanged() - } -) diff --git a/recyclerview-adapters/src/main/java/ru/touchin/adapters/SimpleDataObserver.kt b/recyclerview-adapters/src/main/java/ru/touchin/adapters/SimpleDataObserver.kt index ac9792e..97fc0c6 100644 --- a/recyclerview-adapters/src/main/java/ru/touchin/adapters/SimpleDataObserver.kt +++ b/recyclerview-adapters/src/main/java/ru/touchin/adapters/SimpleDataObserver.kt @@ -15,3 +15,9 @@ abstract class SimpleDataObserver : RecyclerView.AdapterDataObserver() { override fun onItemRangeMoved(fromPosition: Int, toPosition: Int, itemCount: Int) = onChange() } + +fun RecyclerView.Adapter.onDataUpdatedAndDrawn(onChanged: () -> Unit) = registerAdapterDataObserver( + object : SimpleDataObserver() { + override fun onChange() = onChanged() + } +)