From 2585e41b9f6217b0728f8da6ba6c3b36d3993e64 Mon Sep 17 00:00:00 2001 From: Aksenov Vladimir Date: Fri, 5 Jul 2019 16:44:56 +0300 Subject: [PATCH] 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() + +}