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:
parent
c025ee9f29
commit
2b35ce3c77
4 changed files with 9 additions and 12 deletions
|
@ -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()
|
||||
}
|
||||
}
|
|
@ -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()
|
||||
}
|
||||
}
|
|
@ -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")
|
||||
|
|
|
@ -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 }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue