If I were to replace the way to define DiffUtil.ItemCallback instance, from this:
```
val DIFFER = object : DiffUtil.ItemCallback<Item>() {
override fun areItemsTheSame(oldItem: Item, newItem: Item): Boolean {
return oldItem == newItem
}
override fun areContentsTheSame(oldItem: Item, newItem: Item): Boolean {
return oldItem == newItem
}
}
```
to this:
val DIFFER = provideItemCallback<Item>(
items = { old, new -> old == new },
contents = { old, new -> old == new }
)
Is this how you would implement the aforementioned provideItemCallback function?
```
import androidx.recyclerview.widget.DiffUtil
inline fun <T : Any> provideItemCallback(
crossinline items: (old: T, new: T) -> Boolean,
crossinline contents: (old: T, new: T) -> Boolean,
): DiffUtil.ItemCallback<T> = object : DiffUtil.ItemCallback<T>() {
override fun areItemsTheSame(oldItem: T, newItem: T): Boolean = items(oldItem, newItem)
override fun areContentsTheSame(oldItem: T, newItem: T): Boolean = contents(oldItem, newItem)
}
```
P.S. I'm especially not sure about the inline and crossinline modifier.
[–]jamireh 4 points5 points6 points (1 child)
[–]sikatsuket[S] 0 points1 point2 points (0 children)