1
0
Fork 0
mirror of https://github.com/MatomoCamp/matomocamp-companion-android.git synced 2024-09-19 16:13:46 +02:00

simplify the implementation of createSimpleItemCallback()

This commit is contained in:
Christophe Beyls 2022-02-06 17:37:49 +01:00
parent c025ee9f29
commit 2b35ce3c77
4 changed files with 9 additions and 12 deletions

View file

@ -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<Event> { oldItem, newItem ->
oldItem.id == newItem.id
}
private val DIFF_CALLBACK: DiffUtil.ItemCallback<Event> = createSimpleItemCallback { it.id }
private val DETAILS_PAYLOAD = Any()
}
}

View file

@ -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<StatusEvent> { oldItem, newItem ->
oldItem.event.id == newItem.event.id
}
val DIFF_CALLBACK: DiffUtil.ItemCallback<StatusEvent> = createSimpleItemCallback{ it.event.id }
private val DETAILS_PAYLOAD = Any()
}
}

View file

@ -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 <T : Any> createSimpleItemCallback(crossinline areItemsTheSame: (oldItem: T, newItem: T) -> Boolean): DiffUtil.ItemCallback<T> {
inline fun <T : Any, K: Any?> createSimpleItemCallback(crossinline keySelector: (T) -> K): DiffUtil.ItemCallback<T> {
return object : DiffUtil.ItemCallback<T>() {
override fun areItemsTheSame(oldItem: T, newItem: T): Boolean {
return areItemsTheSame(oldItem, newItem)
return keySelector(oldItem) == keySelector(newItem)
}
@SuppressLint("DiffUtilEquals")

View file

@ -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<Person> { oldItem, newItem ->
oldItem.id == newItem.id
}
private val DIFF_CALLBACK: DiffUtil.ItemCallback<Person> = createSimpleItemCallback { it.id }
}
}