Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Callback

abstract class Callback<T2 : Any!> : Comparator<T2>, ListUpdateCallback
kotlin.Any
   ↳ androidx.recyclerview.widget.SortedList.Callback

The class that controls the behavior of the SortedList.

It defines how items should be sorted and how duplicates should be handled.

SortedList calls the callback methods on this class to notify changes about the underlying data.

Summary

Public constructors

The class that controls the behavior of the SortedList.

Public methods

abstract Boolean
areContentsTheSame(oldItem: T2, newItem: T2)

Called by the SortedList when it wants to check whether two items have the same data or not.

abstract Boolean
areItemsTheSame(item1: T2, item2: T2)

Called by the SortedList to decide whether two objects represent the same Item or not.

abstract Int
compare(o1: T2, o2: T2)

Similar to java.util.Comparator#compare(Object, Object), should compare two and return how they should be ordered.

open Any?
getChangePayload(item1: T2, item2: T2)

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

abstract Unit
onChanged(position: Int, count: Int)

Called by the SortedList when the item at the given position is updated.

open Unit
onChanged(position: Int, count: Int, payload: Any?)

Inherited functions

Public constructors

<init>

Callback()

The class that controls the behavior of the SortedList.

It defines how items should be sorted and how duplicates should be handled.

SortedList calls the callback methods on this class to notify changes about the underlying data.

Public methods

areContentsTheSame

abstract fun areContentsTheSame(oldItem: T2, newItem: T2): Boolean

Called by the SortedList when it wants to check whether two items have the same data or not. SortedList uses this information to decide whether it should call onChanged(int, int) or not.

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

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

Parameters
oldItem T2: The previous representation of the object.
newItem T2: The new object that replaces the previous one.
Return
Boolean: True if the contents of the items are the same or false if they are different.

areItemsTheSame

abstract fun areItemsTheSame(item1: T2, item2: T2): Boolean

Called by the SortedList to decide whether two objects represent the same Item or not.

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

Parameters
item1 T2: The first item to check.
item2 T2: The second item to check.
Return
Boolean: True if the two items represent the same object or false if they are different.

compare

abstract fun compare(o1: T2, o2: T2): Int

Similar to java.util.Comparator#compare(Object, Object), should compare two and return how they should be ordered.

Parameters
o1 T2: The first object to compare.
o2 T2: The second object to compare.
Return
Int: a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.

getChangePayload

@Nullable open fun getChangePayload(item1: T2, item2: T2): Any?

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

For example, if you are using Callback 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
item1 T2: The first item to check.
item2 T2: The second item to check.
Return
Any?: A payload object that represents the changes between the two items.

onChanged

abstract fun onChanged(position: Int, count: Int): Unit

Called by the SortedList when the item at the given position is updated.

Parameters
position Int: The position of the item which has been updated.
count Int: The number of items which has changed.

onChanged

open fun onChanged(position: Int, count: Int, payload: Any?): Unit