From 2b35ce3c777c82e1cefc015f8209e9de9af435f3 Mon Sep 17 00:00:00 2001 From: Christophe Beyls Date: Sun, 6 Feb 2022 17:37:49 +0100 Subject: [PATCH] simplify the implementation of createSimpleItemCallback() --- .../java/be/digitalia/fosdem/adapters/BookmarksAdapter.kt | 5 ++--- .../main/java/be/digitalia/fosdem/adapters/EventsAdapter.kt | 5 ++--- .../java/be/digitalia/fosdem/adapters/SimpleItemCallback.kt | 6 +++--- .../be/digitalia/fosdem/fragments/PersonsListFragment.kt | 5 ++--- 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/be/digitalia/fosdem/adapters/BookmarksAdapter.kt b/app/src/main/java/be/digitalia/fosdem/adapters/BookmarksAdapter.kt index e520dec..318413e 100644 --- a/app/src/main/java/be/digitalia/fosdem/adapters/BookmarksAdapter.kt +++ b/app/src/main/java/be/digitalia/fosdem/adapters/BookmarksAdapter.kt @@ -15,6 +15,7 @@ import androidx.collection.SimpleArrayMap import androidx.core.content.ContextCompat import androidx.core.text.set import androidx.core.view.isGone +import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.AdapterDataObserver @@ -243,9 +244,7 @@ class BookmarksAdapter(context: Context, private val multiChoiceHelper: MultiCho } companion object { - private val DIFF_CALLBACK = createSimpleItemCallback { oldItem, newItem -> - oldItem.id == newItem.id - } + private val DIFF_CALLBACK: DiffUtil.ItemCallback = createSimpleItemCallback { it.id } private val DETAILS_PAYLOAD = Any() } } \ No newline at end of file diff --git a/app/src/main/java/be/digitalia/fosdem/adapters/EventsAdapter.kt b/app/src/main/java/be/digitalia/fosdem/adapters/EventsAdapter.kt index 3596ec2..400218e 100644 --- a/app/src/main/java/be/digitalia/fosdem/adapters/EventsAdapter.kt +++ b/app/src/main/java/be/digitalia/fosdem/adapters/EventsAdapter.kt @@ -13,6 +13,7 @@ import androidx.core.content.ContextCompat import androidx.core.text.set import androidx.core.view.isGone import androidx.paging.PagingDataAdapter +import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import be.digitalia.fosdem.R import be.digitalia.fosdem.activities.EventDetailsActivity @@ -150,9 +151,7 @@ class EventsAdapter constructor(context: Context, private val showDay: Boolean = } companion object { - val DIFF_CALLBACK = createSimpleItemCallback { oldItem, newItem -> - oldItem.event.id == newItem.event.id - } + val DIFF_CALLBACK: DiffUtil.ItemCallback = createSimpleItemCallback{ it.event.id } private val DETAILS_PAYLOAD = Any() } } \ No newline at end of file diff --git a/app/src/main/java/be/digitalia/fosdem/adapters/SimpleItemCallback.kt b/app/src/main/java/be/digitalia/fosdem/adapters/SimpleItemCallback.kt index 12129a6..ccdd4f8 100644 --- a/app/src/main/java/be/digitalia/fosdem/adapters/SimpleItemCallback.kt +++ b/app/src/main/java/be/digitalia/fosdem/adapters/SimpleItemCallback.kt @@ -4,13 +4,13 @@ import android.annotation.SuppressLint import androidx.recyclerview.widget.DiffUtil /** - * Creates a DiffUtil.ItemCallback instance using the provided lambda to determine + * Creates a DiffUtil.ItemCallback instance using the provided key selector to determine * if items are the same and using equals() to determine if item contents are the same. */ -inline fun createSimpleItemCallback(crossinline areItemsTheSame: (oldItem: T, newItem: T) -> Boolean): DiffUtil.ItemCallback { +inline fun createSimpleItemCallback(crossinline keySelector: (T) -> K): DiffUtil.ItemCallback { return object : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: T, newItem: T): Boolean { - return areItemsTheSame(oldItem, newItem) + return keySelector(oldItem) == keySelector(newItem) } @SuppressLint("DiffUtilEquals") diff --git a/app/src/main/java/be/digitalia/fosdem/fragments/PersonsListFragment.kt b/app/src/main/java/be/digitalia/fosdem/fragments/PersonsListFragment.kt index 1c7d2ae..0f15e69 100644 --- a/app/src/main/java/be/digitalia/fosdem/fragments/PersonsListFragment.kt +++ b/app/src/main/java/be/digitalia/fosdem/fragments/PersonsListFragment.kt @@ -11,6 +11,7 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.lifecycleScope import androidx.paging.LoadState import androidx.paging.PagingDataAdapter +import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -73,9 +74,7 @@ class PersonsListFragment : Fragment(R.layout.recyclerview_fastscroll) { } companion object { - private val DIFF_CALLBACK = createSimpleItemCallback { oldItem, newItem -> - oldItem.id == newItem.id - } + private val DIFF_CALLBACK: DiffUtil.ItemCallback = createSimpleItemCallback { it.id } } }