PagingDataAdapter
public final class PagingDataAdapter<T extends Object> extends ObjectAdapter
An ObjectAdapter implemented with an AsyncPagingDataDiffer. It is an analogue of androidx.paging.PagingDataAdapter for leanback widgets.
| Parameters | |
|---|---|
<T extends Object> |
Type of the item in the list. |
Summary
Public fields |
|
|---|---|
final @NonNull Flow<@NonNull CombinedLoadStates> |
A hot |
Public constructors |
|
|---|---|
<T extends Object> PagingDataAdapter(Constructs an adapter |
|
<T extends Object> PagingDataAdapter(Constructs an adapter |
|
<T extends Object> PagingDataAdapter(Constructs an adapter |
|
Public methods |
|
|---|---|
final void |
addLoadStateListener(Add a |
@Nullable T |
get(int position)Returns the item for the given position. |
final @Nullable T |
Returns the presented item at the specified position, without notifying Paging of the item access that would normally trigger page loads. |
final void |
refresh()Refresh the data presented by this |
final void |
removeLoadStateListener(Remove a previously registered |
final void |
retry()Retry any failed load requests that would result in a |
int |
size() |
final @NonNull ItemSnapshotList<@NonNull T> |
snapshot()Returns a new |
final void |
submitData(@NonNull PagingData<@NonNull T> pagingData)Present a |
final void |
submitData(Present a |
Inherited methods |
||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
||||||||||||||||||||||||||||||||||||||
Public fields
loadStateFlow
@NonNull
public final @NonNull Flow<@NonNull CombinedLoadStates> loadStateFlow
A hot Flow of CombinedLoadStates that emits a snapshot whenever the loading state of the current PagingData changes.
This flow is conflated, so it buffers the last update to CombinedLoadStates and immediately delivers the current load states on collection.
Public constructors
PagingDataAdapter
public final <T extends Object> PagingDataAdapter(
@NonNull DiffUtil.ItemCallback<@NonNull T> diffCallback,
@NonNull CoroutineDispatcher mainDispatcher,
@NonNull CoroutineDispatcher workerDispatcher
)
Constructs an adapter
| Parameters | |
|---|---|
@NonNull DiffUtil.ItemCallback<@NonNull T> diffCallback |
The |
@NonNull CoroutineDispatcher mainDispatcher |
The |
@NonNull CoroutineDispatcher workerDispatcher |
The |
PagingDataAdapter
public final <T extends Object> PagingDataAdapter(
@NonNull Presenter presenter,
@NonNull DiffUtil.ItemCallback<@NonNull T> diffCallback,
@NonNull CoroutineDispatcher mainDispatcher,
@NonNull CoroutineDispatcher workerDispatcher
)
Constructs an adapter
| Parameters | |
|---|---|
@NonNull Presenter presenter |
|
@NonNull DiffUtil.ItemCallback<@NonNull T> diffCallback |
The |
@NonNull CoroutineDispatcher mainDispatcher |
The |
@NonNull CoroutineDispatcher workerDispatcher |
The |
PagingDataAdapter
public final <T extends Object> PagingDataAdapter(
@NonNull PresenterSelector presenterSelector,
@NonNull DiffUtil.ItemCallback<@NonNull T> diffCallback,
@NonNull CoroutineDispatcher mainDispatcher,
@NonNull CoroutineDispatcher workerDispatcher
)
Constructs an adapter
| Parameters | |
|---|---|
@NonNull PresenterSelector presenterSelector |
|
@NonNull DiffUtil.ItemCallback<@NonNull T> diffCallback |
The |
@NonNull CoroutineDispatcher mainDispatcher |
The |
@NonNull CoroutineDispatcher workerDispatcher |
The |
Public methods
addLoadStateListener
@NonNull
public final void addLoadStateListener(
@NonNull Function1<@NonNull CombinedLoadStates, Unit> listener
)
Add a CombinedLoadStates listener to observe the loading state of the current PagingData.
As new PagingData generations are submitted and displayed, the listener will be notified to reflect the current CombinedLoadStates.
| Parameters | |
|---|---|
@NonNull Function1<@NonNull CombinedLoadStates, Unit> listener |
|
| See also | |
|---|---|
removeLoadStateListener |
|
get
@Nullable
public T get(int position)
Returns the item for the given position. It will return null if placeholders are enabled and data is not yet loaded.
peek
@Nullable
public final T peek(@IntRange(from = 0) int index)
Returns the presented item at the specified position, without notifying Paging of the item access that would normally trigger page loads.
| Parameters | |
|---|---|
@IntRange(from = 0) int index |
Index of the presented item to return, including placeholders. |
| Returns | |
|---|---|
T |
The presented item at position |
refresh
@NonNull
public final void refresh()
Refresh the data presented by this PagingDataAdapter.
refresh triggers the creation of a new PagingData with a new instance of PagingSource to represent an updated snapshot of the backing dataset. If a RemoteMediator is set, calling refresh will also trigger a call to RemoteMediator.load with LoadType REFRESH] to allow RemoteMediator to check for updates to the dataset backing PagingSource.
Note: This API is intended for UI-driven refresh signals, such as swipe-to-refresh. Invalidation due repository-layer signals, such as DB-updates, should instead use PagingSource.invalidate.
| See also | |
|---|---|
invalidate |
|
removeLoadStateListener
@NonNull
public final void removeLoadStateListener(
@NonNull Function1<@NonNull CombinedLoadStates, Unit> listener
)
Remove a previously registered CombinedLoadStates listener.
| Parameters | |
|---|---|
@NonNull Function1<@NonNull CombinedLoadStates, Unit> listener |
Previously registered listener. |
| See also | |
|---|---|
addLoadStateListener |
|
retry
@NonNull
public final void retry()
Retry any failed load requests that would result in a LoadState.Error update to this
LoadState.Error can be generated from two types of load requests: PagingSource.load returning PagingSource.LoadResult.Error returning RemoteMediator.MediatorResult.Error
snapshot
@NonNull
public final ItemSnapshotList<@NonNull T> snapshot()
Returns a new ItemSnapshotList representing the currently presented items, including any placeholders if they are enabled.
submitData
@NonNull
public final void submitData(@NonNull PagingData<@NonNull T> pagingData)
Present a PagingData until it is invalidated by a call to refresh or PagingSource.invalidate.
This method is typically used when collecting from a Flow produced by Pager. For RxJava or LiveData support, use the non-suspending overload of submitData, which accepts a Lifecycle.
Note: This method suspends while it is actively presenting page loads from a PagingData, until the PagingData is invalidated. Although cancellation will propagate to this call automatically, collecting from a Pager.flow with the intention of presenting the most up-to-date representation of your backing dataset should typically be done using collectLatest.
| See also | |
|---|---|
Pager |
|
submitData
@NonNull
public final void submitData(
@NonNull Lifecycle lifecycle,
@NonNull PagingData<@NonNull T> pagingData
)
Present a PagingData until it is either invalidated or another call to submitData is made.
This method is typically used when observing a RxJava or LiveData stream produced by Pager. For Flow support, use the suspending overload of submitData, which automates cancellation via CoroutineScope instead of relying of Lifecycle.
| See also | |
|---|---|
submitData |
|
| |