PagingState


public final class PagingState<Key extends Object, Value extends Object>


Snapshot state of Paging system including the loaded pages, the last accessed anchorPosition, and the config used.

Summary

Public constructors

<Key extends Object, Value extends Object> PagingState(
    @NonNull List<@NonNull PagingSource.LoadResult.Page<@NonNull Key, @NonNull Value>> pages,
    Integer anchorPosition,
    @NonNull PagingConfig config,
    @IntRange(from = 0) int leadingPlaceholderCount
)

Public methods

final Value
closestItemAroundPosition(
    int anchorPosition,
    @NonNull Function1<@NonNull value, @NonNull Boolean> predicate
)

Coerces anchorPosition to closest loaded value in pages that matches predicate.

final Value
closestItemToPosition(int anchorPosition)

Coerces anchorPosition to closest loaded value in pages.

final PagingSource.LoadResult.Page<@NonNull Key, @NonNull Value>
closestPageToPosition(int anchorPosition)

Coerces an index in the list, including placeholders, to closest loaded page in pages.

boolean
equals(Object other)
final Value
final Integer

Most recently accessed index in the list, including placeholders.

final @NonNull PagingConfig

PagingConfig that was given when initializing the PagingData stream.

final @NonNull List<@NonNull PagingSource.LoadResult.Page<@NonNull Key, @NonNull Value>>

Loaded pages of data in the list.

int
final boolean
final Value
@NonNull String

Public constructors

PagingState

public <Key extends Object, Value extends Object> PagingState(
    @NonNull List<@NonNull PagingSource.LoadResult.Page<@NonNull Key, @NonNull Value>> pages,
    Integer anchorPosition,
    @NonNull PagingConfig config,
    @IntRange(from = 0) int leadingPlaceholderCount
)

Public methods

closestItemAroundPosition

Added in 3.4.0-alpha04
public final Value closestItemAroundPosition(
    int anchorPosition,
    @NonNull Function1<@NonNull value, @NonNull Boolean> predicate
)

Coerces anchorPosition to closest loaded value in pages that matches predicate.

This function can be called with anchorPosition to fetch the loaded item that is closest to the last accessed index in the list.

This function searches for the matching predicate amongst items that are positioned both before and after the anchorPosition with this order of priority:

  1. item closest to anchorPosition

  2. item before anchorPosition

This means that given an anchorPosition of item10, if item8 and item11 both match the predicate, then item11 will be returned since it is closer to item10. If two matching items have the same proximity, then the item that comes first will be returned. So given an anchorPosition of item10, if item9 and item11 both match the predicate, then item9 will be returned since it comes before item11.

This method should be avoided if possible if used on Lists that do not support random access, otherwise performance will take a big hit.

Parameters
int anchorPosition

Index in the list, including placeholders.

@NonNull Function1<@NonNull value, @NonNull Boolean> predicate

the predicate that matches target item

Returns
Value

The closest loaded Value in pages to the provided anchorPosition that matches the predicate. null if all loaded pages are empty or if none of the loaded values match predicate

closestItemToPosition

Added in 3.0.0
public final Value closestItemToPosition(int anchorPosition)

Coerces anchorPosition to closest loaded value in pages.

This function can be called with anchorPosition to fetch the loaded item that is closest to the last accessed index in the list.

Parameters
int anchorPosition

Index in the list, including placeholders.

Returns
Value

The closest loaded Value in pages to the provided anchorPosition. null if all loaded pages are empty.

closestPageToPosition

Added in 3.0.0
public final PagingSource.LoadResult.Page<@NonNull Key, @NonNull Value> closestPageToPosition(int anchorPosition)

Coerces an index in the list, including placeholders, to closest loaded page in pages.

This function can be called with anchorPosition to fetch the loaded page that is closest to the last accessed index in the list.

Parameters
int anchorPosition

Index in the list, including placeholders.

Returns
PagingSource.LoadResult.Page<@NonNull Key, @NonNull Value>

The closest loaded Value in pages to the provided anchorPosition. null if all loaded pages are empty.

equals

public boolean equals(Object other)

firstItemOrNull

Added in 3.0.0
public final Value firstItemOrNull()
Returns
Value

The first loaded item in the list or null if all loaded pages are empty or no pages were loaded when this PagingState was created.

getAnchorPosition

Added in 3.0.0
public final Integer getAnchorPosition()

Most recently accessed index in the list, including placeholders.

null if no access in the PagingData has been made yet. E.g., if this snapshot was generated before or during the first load.

getConfig

Added in 3.0.0
public final @NonNull PagingConfig getConfig()

PagingConfig that was given when initializing the PagingData stream.

getPages

Added in 3.0.0
public final @NonNull List<@NonNull PagingSource.LoadResult.Page<@NonNull Key, @NonNull Value>> getPages()

Loaded pages of data in the list.

hashCode

public int hashCode()

isEmpty

Added in 3.0.0
public final boolean isEmpty()
Returns
boolean

true if all loaded pages are empty or no pages were loaded when this PagingState was created, false otherwise.

lastItemOrNull

Added in 3.0.0
public final Value lastItemOrNull()
Returns
Value

The last loaded item in the list or null if all loaded pages are empty or no pages were loaded when this PagingState was created.

toString

public @NonNull String toString()