lightbulb_outline Please take our October 2018 developer survey. Start survey
added in version 27.1.0
belongs to Maven artifact com.android.support:recyclerview-v7:28.0.0-alpha1

DiffUtil.ItemCallback

public static abstract class DiffUtil.ItemCallback
extends Object

java.lang.Object
   ↳ android.support.v7.util.DiffUtil.ItemCallback<T>


Callback for calculating the diff between two non-null items in a list.

DiffUtil.Callback serves two roles - list indexing, and item diffing. ItemCallback handles just the second of these, which allows separation of code that indexes into an array or List from the presentation-layer and content specific diffing code.

Summary

Public constructors

DiffUtil.ItemCallback()

Public methods

abstract boolean areContentsTheSame(T oldItem, T newItem)

Called to check whether two items have the same data.

abstract boolean areItemsTheSame(T oldItem, T newItem)

Called to check whether two objects represent the same item.

Object getChangePayload(T oldItem, T newItem)

When areItemsTheSame(T, T) returns true for two items and areContentsTheSame(T, T) returns false for them, this method is called to get a payload about the change.

Inherited methods

From class java.lang.Object

Public constructors

DiffUtil.ItemCallback

added in version 27.1.0
DiffUtil.ItemCallback ()

Public methods

areContentsTheSame

added in version 27.1.0
boolean areContentsTheSame (T oldItem, 
                T newItem)

Called to check whether two items have the same data.

This information is used to detect if the contents of an item have changed.

This method to check equality instead of equals(Object) so that you can change its behavior depending on your UI.

For example, if you are using DiffUtil with a RecyclerView.Adapter, you should return whether the items' visual representations are the same.

This method is called only if areItemsTheSame(T, T) returns true for these items.

Note: Two null items are assumed to represent the same contents. This callback will not be invoked for this case.

Parameters
oldItem T: The item in the old list.

newItem T: The item in the new list.

Returns
boolean True if the contents of the items are the same or false if they are different.

areItemsTheSame

added in version 27.1.0
boolean areItemsTheSame (T oldItem, 
                T newItem)

Called to check whether two objects represent the same item.

For example, if your items have unique ids, this method should check their id equality.

Note: null items in the list are assumed to be the same as another null item and are assumed to not be the same as a non-null item. This callback will not be invoked for either of those cases.

Parameters
oldItem T: The item in the old list.

newItem T: The item in the new list.

Returns
boolean True if the two items represent the same object or false if they are different.

getChangePayload

added in version 27.1.0
Object getChangePayload (T oldItem, 
                T newItem)

When areItemsTheSame(T, T) returns true for two items and areContentsTheSame(T, T) returns false for them, this method is called to get a payload about the change.

For example, if you are using DiffUtil with RecyclerView, you can return the particular field that changed in the item and your ItemAnimator can use that information to run the correct animation.

Default implementation returns null.

Parameters
oldItem T

newItem T

Returns
Object