| <html devsite="true"> |
| <head> |
| <title>PagingDataAdapter</title> |
| {% setvar book_path %}/reference/androidx/_book.yaml{% endsetvar %} |
| {% include "_shared/_reference-head-tags.html" %} |
| </head> |
| <body> |
| <div id="metadata-info-block"> |
| <div id="source-link"><a href="https://cs.android.com/search?q=file:androidx/paging/PagingDataAdapter.kt+class:androidx.paging.PagingDataAdapter&ss=androidx/platform/frameworks/support" class="external">View Source</a></div> |
| </div> |
| <h1>PagingDataAdapter</h1> |
| <p> |
| <pre>public abstract class <a href="/reference/androidx/paging/PagingDataAdapter.html">PagingDataAdapter</a><T extends <a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>, VH extends <a href="/reference/androidx/recyclerview/widget/RecyclerView.ViewHolder.html">RecyclerView.ViewHolder</a>> extends <a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html">RecyclerView.Adapter</a></pre> |
| </p> |
| <div class="devsite-table-wrapper"> |
| <table class="jd-inheritance-table"> |
| <tbody> |
| <tr> |
| <td colspan="3"><a href="https://developer.android.com/reference/java/lang/Object.html">java.lang.Object</a></td> |
| </tr> |
| <tr> |
| <td class="jd-inheritance-space"> ↳</td> |
| <td colspan="2"><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html">androidx.recyclerview.widget.RecyclerView.Adapter</a></td> |
| </tr> |
| <tr> |
| <td> </td> |
| <td class="jd-inheritance-space"> ↳</td> |
| <td colspan="1"><a href="/reference/androidx/paging/PagingDataAdapter.html">androidx.paging.PagingDataAdapter</a></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <hr> |
| <p><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html">RecyclerView.Adapter</a></code> base class for presenting paged data from <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code>s in a <code><a href="/reference/androidx/recyclerview/widget/RecyclerView.html">RecyclerView</a></code>.</p> |
| <p>This class is a convenience wrapper around <code><a href="/reference/androidx/paging/AsyncPagingDataDiffer.html">AsyncPagingDataDiffer</a></code> that implements common default behavior for item counting, and listening to update events.</p> |
| <p>To present a <code><a href="/reference/androidx/paging/Pager.html">Pager</a></code>, use <code><a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/index.html">collectLatest</a></code> to observe <code><a href="/reference/androidx/paging/Pager.html#flow()">Pager.flow</a></code> and call <code><a href="/reference/androidx/paging/PagingDataAdapter.html#submitData(androidx.paging.PagingData)">submitData</a></code> whenever a new <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> is emitted.</p> |
| <p>If using RxJava and LiveData extensions on <code><a href="/reference/androidx/paging/Pager.html">Pager</a></code>, use the non-suspending overload of <code><a href="/reference/androidx/paging/PagingDataAdapter.html#submitData(androidx.paging.PagingData)">submitData</a></code>, which accepts a <code><a href="/reference/androidx/lifecycle/Lifecycle.html">Lifecycle</a></code>.</p> |
| <p><code><a href="/reference/androidx/paging/PagingDataAdapter.html">PagingDataAdapter</a></code> listens to internal <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> loading events as <code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html">pages</a></code> are loaded, and uses <code><a href="/reference/androidx/recyclerview/widget/DiffUtil.html">DiffUtil</a></code> on a background thread to compute fine grained updates as updated content in the form of new PagingData objects are received.</p> |
| <p><em>State Restoration</em>: To be able to restore <code><a href="/reference/androidx/recyclerview/widget/RecyclerView.html">RecyclerView</a></code> state (e.g. scroll position) after a configuration change / application recreate, <code><a href="/reference/androidx/paging/PagingDataAdapter.html">PagingDataAdapter</a></code> calls <code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#setStateRestorationPolicy(androidx.recyclerview.widget.RecyclerView.Adapter.StateRestorationPolicy)">RecyclerView.Adapter.setStateRestorationPolicy</a></code> with <code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.StateRestorationPolicy.PREVENT.html">RecyclerView.Adapter.StateRestorationPolicy.PREVENT</a></code> upon initialization and waits for the first page to load before allowing state restoration. Any other call to <code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#setStateRestorationPolicy(androidx.recyclerview.widget.RecyclerView.Adapter.StateRestorationPolicy)">RecyclerView.Adapter.setStateRestorationPolicy</a></code> by the application will disable this logic and will rely on the user set value.</p> |
| <pre class="prettyprint">val USER_COMPARATOR = object : DiffUtil.ItemCallback<User>() { |
| override fun areItemsTheSame(oldItem: User, newItem: User): Boolean = |
| // User ID serves as unique ID |
| oldItem.userId == newItem.userId |
| |
| override fun areContentsTheSame(oldItem: User, newItem: User): Boolean = |
| // Compare full contents (note: Java users should call .equals()) |
| oldItem == newItem |
| } |
| |
| class UserAdapter : PagingDataAdapter<User, UserViewHolder>(USER_COMPARATOR) { |
| override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder { |
| return UserViewHolder.create(parent) |
| } |
| |
| override fun onBindViewHolder(holder: UserViewHolder, position: Int) { |
| val repoItem = getItem(position) |
| // Note that item may be null, ViewHolder must support binding null item as placeholder |
| holder.bind(repoItem) |
| } |
| }</pre> |
| <h2>Summary</h2> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%"><h3>Public fields</h3></th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code>final @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/CombinedLoadStates.html">CombinedLoadStates</a>></code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#loadStateFlow()">loadStateFlow</a></code></div> |
| <p>A hot <code><a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a></code> of <code><a href="/reference/androidx/paging/CombinedLoadStates.html">CombinedLoadStates</a></code> that emits a snapshot whenever the loading state of the current <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> changes.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a><<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>></code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#onPagesUpdatedFlow()">onPagesUpdatedFlow</a></code></div> |
| <p>A hot <code><a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a></code> that emits after the pages presented to the UI are updated, even if the actual items presented don't change.</p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%"><h3>Public constructors</h3></th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td> |
| <div><code><T extends <a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>, VH extends <a href="/reference/androidx/recyclerview/widget/RecyclerView.ViewHolder.html">RecyclerView.ViewHolder</a>> <a href="/reference/androidx/paging/PagingDataAdapter.html#PagingDataAdapter(androidx.recyclerview.widget.DiffUtil.ItemCallback,kotlin.coroutines.CoroutineContext,kotlin.coroutines.CoroutineContext)">PagingDataAdapter</a>(<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/DiffUtil.ItemCallback.html">DiffUtil.ItemCallback</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> T> diffCallback,<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.coroutines/-coroutine-context/index.html">CoroutineContext</a> mainDispatcher,<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.coroutines/-coroutine-context/index.html">CoroutineContext</a> workerDispatcher<br>)</code></div> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%"><h3>Public methods</h3></th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#addLoadStateListener(kotlin.Function1)">addLoadStateListener</a>(<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> Function1<@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/CombinedLoadStates.html">CombinedLoadStates</a>, <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> listener<br>)</code></div> |
| <p>Add a <code><a href="/reference/androidx/paging/CombinedLoadStates.html">CombinedLoadStates</a></code> listener to observe the loading state of the current <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code>.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#addOnPagesUpdatedListener(kotlin.Function0)">addOnPagesUpdatedListener</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> Function0<<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> listener)</code></div> |
| <p>Add a listener which triggers after the pages presented to the UI are updated, even if the actual items presented don't change.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>int</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#getItemCount()">getItemCount</a>()</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final long</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#getItemId(kotlin.Int)">getItemId</a>(int position)</code></div> |
| <p>Note: <code><a href="/reference/androidx/paging/PagingDataAdapter.html#getItemId(kotlin.Int)">getItemId</a></code> is final, because stable IDs are unnecessary and therefore unsupported.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final T</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#peek(kotlin.Int)">peek</a>(@<a href="/reference/androidx/annotation/IntRange.html">IntRange</a>(from = 0) int index)</code></div> |
| <p>Returns the presented item at the specified position, without notifying Paging of the item access that would normally trigger page loads.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#refresh()">refresh</a>()</code></div> |
| <p>Refresh the data presented by this <code><a href="/reference/androidx/paging/PagingDataAdapter.html">PagingDataAdapter</a></code>.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#removeLoadStateListener(kotlin.Function1)">removeLoadStateListener</a>(<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> Function1<@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/CombinedLoadStates.html">CombinedLoadStates</a>, <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> listener<br>)</code></div> |
| <p>Remove a previously registered <code><a href="/reference/androidx/paging/CombinedLoadStates.html">CombinedLoadStates</a></code> listener.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#removeOnPagesUpdatedListener(kotlin.Function0)">removeOnPagesUpdatedListener</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> Function0<<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> listener)</code></div> |
| <p>Remove a previously registered listener for new <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> generations completing initial load and presenting to the UI.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#retry()">retry</a>()</code></div> |
| <p>Retry any failed load requests that would result in a <code><a href="/reference/androidx/paging/LoadState.Error.html">LoadState.Error</a></code> update to this <code><a href="/reference/androidx/paging/PagingDataAdapter.html">PagingDataAdapter</a></code>.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#setHasStableIds(kotlin.Boolean)">setHasStableIds</a>(boolean hasStableIds)</code></div> |
| <p>Stable ids are unsupported by <code><a href="/reference/androidx/paging/PagingDataAdapter.html">PagingDataAdapter</a></code>.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#setStateRestorationPolicy(androidx.recyclerview.widget.RecyclerView.Adapter.StateRestorationPolicy)">setStateRestorationPolicy</a>(<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.StateRestorationPolicy.html">RecyclerView.Adapter.StateRestorationPolicy</a> strategy<br>)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/ItemSnapshotList.html">ItemSnapshotList</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> T></code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#snapshot()">snapshot</a>()</code></div> |
| <p>Returns a new <code><a href="/reference/androidx/paging/ItemSnapshotList.html">ItemSnapshotList</a></code> representing the currently presented items, including any placeholders if they are enabled.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#submitData(androidx.paging.PagingData)">submitData</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/PagingData.html">PagingData</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> T> pagingData)</code></div> |
| <p>Present a <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> until it is invalidated by a call to <code><a href="/reference/androidx/paging/PagingDataAdapter.html#refresh()">refresh</a></code> or <code><a href="/reference/androidx/paging/PagingSource.html#invalidate()">PagingSource.invalidate</a></code>.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#submitData(androidx.lifecycle.Lifecycle,androidx.paging.PagingData)">submitData</a>(<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/lifecycle/Lifecycle.html">Lifecycle</a> lifecycle,<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/PagingData.html">PagingData</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> T> pagingData<br>)</code></div> |
| <p>Present a <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> until it is either invalidated or another call to <code><a href="/reference/androidx/paging/PagingDataAdapter.html#submitData(androidx.paging.PagingData)">submitData</a></code> is made.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/ConcatAdapter.html">ConcatAdapter</a></code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#withLoadStateFooter(androidx.paging.LoadStateAdapter)">withLoadStateFooter</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> ?> footer)</code></div> |
| <p>Create a <code><a href="/reference/androidx/recyclerview/widget/ConcatAdapter.html">ConcatAdapter</a></code> with the provided <code><a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a></code>s displaying the <code><a href="/reference/androidx/paging/LoadState.html">LoadType.APPEND</a></code> as a list item at the start of the presented list.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/ConcatAdapter.html">ConcatAdapter</a></code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#withLoadStateHeader(androidx.paging.LoadStateAdapter)">withLoadStateHeader</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> ?> header)</code></div> |
| <p>Create a <code><a href="/reference/androidx/recyclerview/widget/ConcatAdapter.html">ConcatAdapter</a></code> with the provided <code><a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a></code>s displaying the <code><a href="/reference/androidx/paging/LoadState.html">LoadType.PREPEND</a></code> as a list item at the end of the presented list.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/ConcatAdapter.html">ConcatAdapter</a></code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#withLoadStateHeaderAndFooter(androidx.paging.LoadStateAdapter,androidx.paging.LoadStateAdapter)">withLoadStateHeaderAndFooter</a>(<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> ?> header,<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> ?> footer<br>)</code></div> |
| <p>Create a <code><a href="/reference/androidx/recyclerview/widget/ConcatAdapter.html">ConcatAdapter</a></code> with the provided <code><a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a></code>s displaying the <code><a href="/reference/androidx/paging/LoadType.html#PREPEND">LoadType.PREPEND</a></code> and <code><a href="/reference/androidx/paging/LoadState.html">LoadType.APPEND</a></code>s as list items at the start and end respectively.</p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%"><h3>Protected methods</h3></th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code>final T</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/paging/PagingDataAdapter.html#getItem(kotlin.Int)">getItem</a>(@<a href="/reference/androidx/annotation/IntRange.html">IntRange</a>(from = 0) int position)</code></div> |
| <p>Returns the presented item at the specified position, notifying Paging of the item access to trigger any loads necessary to fulfill <code><a href="/reference/androidx/paging/PagingConfig.html#prefetchDistance()">prefetchDistance</a></code>.</p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive" id="inhmethods"> |
| <thead> |
| <tr> |
| <th colspan="100%"><h3>Inherited methods</h3></th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><devsite-expandable><span class="expand-control">From <a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html">androidx.recyclerview.widget.RecyclerView.Adapter</a></span> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <tbody class="list"> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#bindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder,kotlin.Int)">bindViewHolder</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> VH p0, int p1)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> VH</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#createViewHolder(android.view.ViewGroup,kotlin.Int)">createViewHolder</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/android/view/ViewGroup.html">ViewGroup</a> p0, int p1)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>int</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#findRelativeAdapterPositionIn(androidx.recyclerview.widget.RecyclerView.Adapter,androidx.recyclerview.widget.RecyclerView.ViewHolder,kotlin.Int)">findRelativeAdapterPositionIn</a>(<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html">RecyclerView.Adapter</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/RecyclerView.ViewHolder.html">RecyclerView.ViewHolder</a>> p0,<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/RecyclerView.ViewHolder.html">RecyclerView.ViewHolder</a> p1,<br> int p2<br>)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>int</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#getItemViewType(kotlin.Int)">getItemViewType</a>(int p0)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.StateRestorationPolicy.html">RecyclerView.Adapter.StateRestorationPolicy</a></code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#getStateRestorationPolicy()">getStateRestorationPolicy</a>()</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final boolean</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#hasObservers()">hasObservers</a>()</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final boolean</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#hasStableIds()">hasStableIds</a>()</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#notifyDataSetChanged()">notifyDataSetChanged</a>()</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#notifyItemChanged(kotlin.Int)">notifyItemChanged</a>(int p0)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#notifyItemChanged(kotlin.Int,kotlin.Any)">notifyItemChanged</a>(int p0, @<a href="/reference/androidx/annotation/Nullable.html">Nullable</a> <a href="https://developer.android.com/reference/java/lang/Object.html">Object</a> p1)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#notifyItemInserted(kotlin.Int)">notifyItemInserted</a>(int p0)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#notifyItemMoved(kotlin.Int,kotlin.Int)">notifyItemMoved</a>(int p0, int p1)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#notifyItemRangeChanged(kotlin.Int,kotlin.Int)">notifyItemRangeChanged</a>(int p0, int p1)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#notifyItemRangeChanged(kotlin.Int,kotlin.Int,kotlin.Any)">notifyItemRangeChanged</a>(int p0, int p1, @<a href="/reference/androidx/annotation/Nullable.html">Nullable</a> <a href="https://developer.android.com/reference/java/lang/Object.html">Object</a> p2)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#notifyItemRangeInserted(kotlin.Int,kotlin.Int)">notifyItemRangeInserted</a>(int p0, int p1)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#notifyItemRangeRemoved(kotlin.Int,kotlin.Int)">notifyItemRangeRemoved</a>(int p0, int p1)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#notifyItemRemoved(kotlin.Int)">notifyItemRemoved</a>(int p0)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#onAttachedToRecyclerView(androidx.recyclerview.widget.RecyclerView)">onAttachedToRecyclerView</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/RecyclerView.html">RecyclerView</a> p0)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>abstract void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder,kotlin.Int)">onBindViewHolder</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> VH p0, int p1)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder,kotlin.Int,kotlin.collections.MutableList)">onBindViewHolder</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> VH p0, int p1, @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/java/util/List.html">List</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>> p2)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>abstract @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> VH</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#onCreateViewHolder(android.view.ViewGroup,kotlin.Int)">onCreateViewHolder</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/android/view/ViewGroup.html">ViewGroup</a> p0, int p1)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#onDetachedFromRecyclerView(androidx.recyclerview.widget.RecyclerView)">onDetachedFromRecyclerView</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/RecyclerView.html">RecyclerView</a> p0)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>boolean</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#onFailedToRecycleView(androidx.recyclerview.widget.RecyclerView.ViewHolder)">onFailedToRecycleView</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> VH p0)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#onViewAttachedToWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder)">onViewAttachedToWindow</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> VH p0)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#onViewDetachedFromWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder)">onViewDetachedFromWindow</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> VH p0)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder)">onViewRecycled</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> VH p0)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#registerAdapterDataObserver(androidx.recyclerview.widget.RecyclerView.AdapterDataObserver)">registerAdapterDataObserver</a>(<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/RecyclerView.AdapterDataObserver.html">RecyclerView.AdapterDataObserver</a> p0<br>)</code></div> |
| </td> |
| </tr> |
| <tr> |
| <td><code>void</code></td> |
| <td> |
| <div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#unregisterAdapterDataObserver(androidx.recyclerview.widget.RecyclerView.AdapterDataObserver)">unregisterAdapterDataObserver</a>(<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/RecyclerView.AdapterDataObserver.html">RecyclerView.AdapterDataObserver</a> p0<br>)</code></div> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </devsite-expandable> </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="list"> |
| <h2>Public fields</h2> |
| <div class="api-item"><a name="getLoadStateFlow()"></a><a name="setLoadStateFlow()"></a><a name="getLoadStateFlow--"></a><a name="setLoadStateFlow--"></a> |
| <h3 class="api-name" id="loadStateFlow()">loadStateFlow</h3> |
| <pre class="api-signature no-pretty-print">public final @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/CombinedLoadStates.html">CombinedLoadStates</a>> <a href="/reference/androidx/paging/PagingDataAdapter.html#loadStateFlow()">loadStateFlow</a></pre> |
| <p>A hot <code><a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a></code> of <code><a href="/reference/androidx/paging/CombinedLoadStates.html">CombinedLoadStates</a></code> that emits a snapshot whenever the loading state of the current <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> changes.</p> |
| <p>This flow is conflated, so it buffers the last update to <code><a href="/reference/androidx/paging/CombinedLoadStates.html">CombinedLoadStates</a></code> and immediately delivers the current load states on collection.</p> |
| </div> |
| <div class="api-item"><a name="getOnPagesUpdatedFlow()"></a><a name="setOnPagesUpdatedFlow()"></a><a name="getOnPagesUpdatedFlow--"></a><a name="setOnPagesUpdatedFlow--"></a> |
| <h3 class="api-name" id="onPagesUpdatedFlow()">onPagesUpdatedFlow</h3> |
| <pre class="api-signature no-pretty-print">public final @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a><<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> <a href="/reference/androidx/paging/PagingDataAdapter.html#onPagesUpdatedFlow()">onPagesUpdatedFlow</a></pre> |
| <p>A hot <code><a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a></code> that emits after the pages presented to the UI are updated, even if the actual items presented don't change.</p> |
| <p>An update is triggered from one of the following:</p> |
| <ul> |
| <li> |
| <p><code><a href="/reference/androidx/paging/PagingDataAdapter.html#submitData(androidx.paging.PagingData)">submitData</a></code> is called and initial load completes, regardless of any differences in the loaded data</p> |
| </li> |
| <li> |
| <p>A <code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html">Page</a></code> is inserted</p> |
| </li> |
| <li> |
| <p>A <code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html">Page</a></code> is dropped</p> |
| </li> |
| </ul> |
| <p>Note: This is a <code><a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-shared-flow/index.html">SharedFlow</a></code> configured to replay 0 items with a buffer of size 64. If a collector lags behind page updates, it may trigger multiple times for each intermediate update that was presented while your collector was still working. To avoid this behavior, you can <code><a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/index.html">conflate</a></code> this <code><a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a></code> so that you only receive the latest update, which is useful in cases where you are simply updating UI and don't care about tracking the exact number of page updates.</p> |
| </div> |
| </div> |
| <div class="list"> |
| <h2>Public constructors</h2> |
| <div class="api-item"><a name="PagingDataAdapter(androidx.recyclerview.widget.DiffUtil.ItemCallback, kotlin.coroutines.CoroutineContext, kotlin.coroutines.CoroutineContext)"></a><a name="PagingDataAdapter-androidx.recyclerview.widget.DiffUtil.ItemCallback-kotlin.coroutines.CoroutineContext-kotlin.coroutines.CoroutineContext-"></a><a name="pagingdataadapter"></a> |
| <h3 class="api-name" id="PagingDataAdapter(androidx.recyclerview.widget.DiffUtil.ItemCallback,kotlin.coroutines.CoroutineContext,kotlin.coroutines.CoroutineContext)">PagingDataAdapter</h3> |
| <pre class="api-signature no-pretty-print">public <T extends <a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>, VH extends <a href="/reference/androidx/recyclerview/widget/RecyclerView.ViewHolder.html">RecyclerView.ViewHolder</a>> <a href="/reference/androidx/paging/PagingDataAdapter.html#PagingDataAdapter(androidx.recyclerview.widget.DiffUtil.ItemCallback,kotlin.coroutines.CoroutineContext,kotlin.coroutines.CoroutineContext)">PagingDataAdapter</a>(<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/DiffUtil.ItemCallback.html">DiffUtil.ItemCallback</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> T> diffCallback,<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.coroutines/-coroutine-context/index.html">CoroutineContext</a> mainDispatcher,<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.coroutines/-coroutine-context/index.html">CoroutineContext</a> workerDispatcher<br>)</pre> |
| </div> |
| </div> |
| <div class="list"> |
| <h2>Public methods</h2> |
| <div class="api-item"><a name="addLoadStateListener-kotlin.Function1-"></a><a name="addloadstatelistener"></a> |
| <h3 class="api-name" id="addLoadStateListener(kotlin.Function1)">addLoadStateListener</h3> |
| <pre class="api-signature no-pretty-print">public final void <a href="/reference/androidx/paging/PagingDataAdapter.html#addLoadStateListener(kotlin.Function1)">addLoadStateListener</a>(<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> Function1<@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/CombinedLoadStates.html">CombinedLoadStates</a>, <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> listener<br>)</pre> |
| <p>Add a <code><a href="/reference/androidx/paging/CombinedLoadStates.html">CombinedLoadStates</a></code> listener to observe the loading state of the current <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code>.</p> |
| <p>As new <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> generations are submitted and displayed, the listener will be notified to reflect the current <code><a href="/reference/androidx/paging/CombinedLoadStates.html">CombinedLoadStates</a></code>.</p> |
| <pre class="prettyprint">val adapter = UserPagingAdapter() |
| adapter.addLoadStateListener { |
| // show a retry button outside the list when refresh hits an error |
| retryButton.isVisible = it.refresh is LoadState.Error |
| |
| // swipeRefreshLayout displays whether refresh is occurring |
| swipeRefreshLayout.isRefreshing = it.refresh is LoadState.Loading |
| |
| // show an empty state over the list when loading initially, before items are loaded |
| emptyState.isVisible = it.refresh is LoadState.Loading && adapter.itemCount == 0 |
| }</pre> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">Parameters</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code>@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> Function1<@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/CombinedLoadStates.html">CombinedLoadStates</a>, <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> listener</code></td> |
| <td> |
| <p><code><a href="/reference/androidx/paging/LoadStates.html">LoadStates</a></code> listener to receive updates.</p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">See also</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/PagingDataAdapter.html#removeLoadStateListener(kotlin.Function1)">removeLoadStateListener</a></code></td> |
| <td></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="api-item"><a name="addOnPagesUpdatedListener-kotlin.Function0-"></a><a name="addonpagesupdatedlistener"></a> |
| <h3 class="api-name" id="addOnPagesUpdatedListener(kotlin.Function0)">addOnPagesUpdatedListener</h3> |
| <pre class="api-signature no-pretty-print">public final void <a href="/reference/androidx/paging/PagingDataAdapter.html#addOnPagesUpdatedListener(kotlin.Function0)">addOnPagesUpdatedListener</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> Function0<<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> listener)</pre> |
| <p>Add a listener which triggers after the pages presented to the UI are updated, even if the actual items presented don't change.</p> |
| <p>An update is triggered from one of the following:</p> |
| <ul> |
| <li> |
| <p><code><a href="/reference/androidx/paging/PagingDataAdapter.html#submitData(androidx.paging.PagingData)">submitData</a></code> is called and initial load completes, regardless of any differences in the loaded data</p> |
| </li> |
| <li> |
| <p>A <code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html">Page</a></code> is inserted</p> |
| </li> |
| <li> |
| <p>A <code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html">Page</a></code> is dropped</p> |
| </li> |
| </ul> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">Parameters</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code>@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> Function0<<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> listener</code></td> |
| <td> |
| <p>called after pages presented are updated.</p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">See also</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/PagingDataAdapter.html#removeOnPagesUpdatedListener(kotlin.Function0)">removeOnPagesUpdatedListener</a></code></td> |
| <td></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="api-item"><a name="getItemCount--"></a><a name="getitemcount"></a> |
| <h3 class="api-name" id="getItemCount()">getItemCount</h3> |
| <pre class="api-signature no-pretty-print">public int <a href="/reference/androidx/paging/PagingDataAdapter.html#getItemCount()">getItemCount</a>()</pre> |
| </div> |
| <div class="api-item"><a name="getItemId-kotlin.Int-"></a><a name="getitemid"></a> |
| <h3 class="api-name" id="getItemId(kotlin.Int)">getItemId</h3> |
| <pre class="api-signature no-pretty-print">public final long <a href="/reference/androidx/paging/PagingDataAdapter.html#getItemId(kotlin.Int)">getItemId</a>(int position)</pre> |
| <p>Note: <code><a href="/reference/androidx/paging/PagingDataAdapter.html#getItemId(kotlin.Int)">getItemId</a></code> is final, because stable IDs are unnecessary and therefore unsupported.</p> |
| <p><code><a href="/reference/androidx/paging/PagingDataAdapter.html">PagingDataAdapter</a></code>'s async diffing means that efficient change animations are handled for you, without the performance drawbacks of <code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#notifyDataSetChanged()">RecyclerView.Adapter.notifyDataSetChanged</a></code>. Instead, the diffCallback parameter of the <code><a href="/reference/androidx/paging/PagingDataAdapter.html">PagingDataAdapter</a></code> serves the same functionality - informing the adapter and <code><a href="/reference/androidx/recyclerview/widget/RecyclerView.html">RecyclerView</a></code> how items are changed and moved.</p> |
| </div> |
| <div class="api-item"><a name="peek-kotlin.Int-"></a><a name="peek"></a> |
| <h3 class="api-name" id="peek(kotlin.Int)">peek</h3> |
| <pre class="api-signature no-pretty-print">public final T <a href="/reference/androidx/paging/PagingDataAdapter.html#peek(kotlin.Int)">peek</a>(@<a href="/reference/androidx/annotation/IntRange.html">IntRange</a>(from = 0) int index)</pre> |
| <p>Returns the presented item at the specified position, without notifying Paging of the item access that would normally trigger page loads.</p> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">Parameters</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code>@<a href="/reference/androidx/annotation/IntRange.html">IntRange</a>(from = 0) int index</code></td> |
| <td> |
| <p>Index of the presented item to return, including placeholders.</p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">Returns</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code>T</code></td> |
| <td> |
| <p>The presented item at position <code><a href="/reference/androidx/paging/PagingDataAdapter.html#peek(kotlin.Int)">index</a></code>, <code>null</code> if it is a placeholder.</p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="api-item"><a name="refresh--"></a><a name="refresh"></a> |
| <h3 class="api-name" id="refresh()">refresh</h3> |
| <pre class="api-signature no-pretty-print">public final void <a href="/reference/androidx/paging/PagingDataAdapter.html#refresh()">refresh</a>()</pre> |
| <p>Refresh the data presented by this <code><a href="/reference/androidx/paging/PagingDataAdapter.html">PagingDataAdapter</a></code>.</p> |
| <p><code><a href="/reference/androidx/paging/PagingDataAdapter.html#refresh()">refresh</a></code> triggers the creation of a new <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> with a new instance of <code><a href="/reference/androidx/paging/PagingSource.html">PagingSource</a></code> to represent an updated snapshot of the backing dataset. If a <code><a href="/reference/androidx/paging/RemoteMediator.html">RemoteMediator</a></code> is set, calling <code><a href="/reference/androidx/paging/PagingDataAdapter.html#refresh()">refresh</a></code> will also trigger a call to <code><a href="/reference/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">RemoteMediator.load</a></code> with <code><a href="/reference/androidx/paging/LoadType.html#REFRESH">LoadType</a></code> to allow <code><a href="/reference/androidx/paging/RemoteMediator.html">RemoteMediator</a></code> to check for updates to the dataset backing <code><a href="/reference/androidx/paging/PagingSource.html">PagingSource</a></code>.</p> |
| <p>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 <code><a href="/reference/androidx/paging/PagingSource.html#invalidate()">PagingSource.invalidate</a></code>.</p> |
| <pre class="prettyprint">class MyActivity : AppCompatActivity() { |
| private lateinit var binding: MyActivityBinding |
| private val pagingAdapter = UserPagingAdapter() |
| |
| override fun onCreate(savedInstanceState: Bundle?) { |
| super.onCreate(savedInstanceState) |
| binding = MyActivityBinding.inflate(layoutInflater) |
| setContentView(binding.root) |
| |
| binding.recyclerView.adapter = pagingAdapter |
| pagingAdapter.addLoadStateListener { loadStates -> |
| binding.swipeRefreshLayout.isRefreshing = loadStates.refresh is LoadState.Loading |
| } |
| |
| binding.swipeRefreshLayout.setOnRefreshListener { |
| pagingAdapter.refresh() |
| } |
| } |
| }</pre> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">See also</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/PagingSource.html#invalidate()">invalidate</a></code></td> |
| <td></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="api-item"><a name="removeLoadStateListener-kotlin.Function1-"></a><a name="removeloadstatelistener"></a> |
| <h3 class="api-name" id="removeLoadStateListener(kotlin.Function1)">removeLoadStateListener</h3> |
| <pre class="api-signature no-pretty-print">public final void <a href="/reference/androidx/paging/PagingDataAdapter.html#removeLoadStateListener(kotlin.Function1)">removeLoadStateListener</a>(<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> Function1<@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/CombinedLoadStates.html">CombinedLoadStates</a>, <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> listener<br>)</pre> |
| <p>Remove a previously registered <code><a href="/reference/androidx/paging/CombinedLoadStates.html">CombinedLoadStates</a></code> listener.</p> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">Parameters</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code>@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> Function1<@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/CombinedLoadStates.html">CombinedLoadStates</a>, <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> listener</code></td> |
| <td> |
| <p>Previously registered listener.</p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">See also</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/PagingDataAdapter.html#addLoadStateListener(kotlin.Function1)">addLoadStateListener</a></code></td> |
| <td></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="api-item"><a name="removeOnPagesUpdatedListener-kotlin.Function0-"></a><a name="removeonpagesupdatedlistener"></a> |
| <h3 class="api-name" id="removeOnPagesUpdatedListener(kotlin.Function0)">removeOnPagesUpdatedListener</h3> |
| <pre class="api-signature no-pretty-print">public final void <a href="/reference/androidx/paging/PagingDataAdapter.html#removeOnPagesUpdatedListener(kotlin.Function0)">removeOnPagesUpdatedListener</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> Function0<<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> listener)</pre> |
| <p>Remove a previously registered listener for new <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> generations completing initial load and presenting to the UI.</p> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">Parameters</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code>@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> Function0<<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> listener</code></td> |
| <td> |
| <p>Previously registered listener.</p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">See also</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/PagingDataAdapter.html#addOnPagesUpdatedListener(kotlin.Function0)">addOnPagesUpdatedListener</a></code></td> |
| <td></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="api-item"><a name="retry--"></a><a name="retry"></a> |
| <h3 class="api-name" id="retry()">retry</h3> |
| <pre class="api-signature no-pretty-print">public final void <a href="/reference/androidx/paging/PagingDataAdapter.html#retry()">retry</a>()</pre> |
| <p>Retry any failed load requests that would result in a <code><a href="/reference/androidx/paging/LoadState.Error.html">LoadState.Error</a></code> update to this <code><a href="/reference/androidx/paging/PagingDataAdapter.html">PagingDataAdapter</a></code>.</p> |
| <p>Unlike <code><a href="/reference/androidx/paging/PagingDataAdapter.html#refresh()">refresh</a></code>, this does not invalidate <code><a href="/reference/androidx/paging/PagingSource.html">PagingSource</a></code>, it only retries failed loads within the same generation of <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code>.</p> |
| <p><code><a href="/reference/androidx/paging/LoadState.Error.html">LoadState.Error</a></code> can be generated from two types of load requests:</p> |
| <ul> |
| <li> |
| <p><code><a href="/reference/androidx/paging/PagingSource.html#load(androidx.paging.PagingSource.LoadParams)">PagingSource.load</a></code> returning <code><a href="/reference/androidx/paging/PagingSource.LoadResult.Error.html">PagingSource.LoadResult.Error</a></code></p> |
| </li> |
| <li> |
| <p><code><a href="/reference/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">RemoteMediator.load</a></code> returning <code><a href="/reference/androidx/paging/RemoteMediator.MediatorResult.Error.html">RemoteMediator.MediatorResult.Error</a></code></p> |
| </li> |
| </ul> |
| </div> |
| <div class="api-item"><a name="setHasStableIds-kotlin.Boolean-"></a><a name="sethasstableids"></a> |
| <h3 class="api-name" id="setHasStableIds(kotlin.Boolean)">setHasStableIds</h3> |
| <pre class="api-signature no-pretty-print">public final void <a href="/reference/androidx/paging/PagingDataAdapter.html#setHasStableIds(kotlin.Boolean)">setHasStableIds</a>(boolean hasStableIds)</pre> |
| <p>Stable ids are unsupported by <code><a href="/reference/androidx/paging/PagingDataAdapter.html">PagingDataAdapter</a></code>. Calling this method is an error and will result in an <code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unsupported-operation-exception/index.html">UnsupportedOperationException</a></code>.</p> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">Parameters</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code>boolean hasStableIds</code></td> |
| <td> |
| <p>Whether items in data set have unique identifiers or not.</p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">Throws</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unsupported-operation-exception/index.html">kotlin.UnsupportedOperationException</a> kotlin.UnsupportedOperationException</code></td> |
| <td> |
| <p>Always thrown, since this is unsupported by <code><a href="/reference/androidx/paging/PagingDataAdapter.html">PagingDataAdapter</a></code>.</p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="api-item"><a name="setStateRestorationPolicy-androidx.recyclerview.widget.RecyclerView.Adapter.StateRestorationPolicy-"></a><a name="setstaterestorationpolicy"></a> |
| <h3 class="api-name" id="setStateRestorationPolicy(androidx.recyclerview.widget.RecyclerView.Adapter.StateRestorationPolicy)">setStateRestorationPolicy</h3> |
| <pre class="api-signature no-pretty-print">public void <a href="/reference/androidx/paging/PagingDataAdapter.html#setStateRestorationPolicy(androidx.recyclerview.widget.RecyclerView.Adapter.StateRestorationPolicy)">setStateRestorationPolicy</a>(<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.StateRestorationPolicy.html">RecyclerView.Adapter.StateRestorationPolicy</a> strategy<br>)</pre> |
| </div> |
| <div class="api-item"><a name="snapshot--"></a><a name="snapshot"></a> |
| <h3 class="api-name" id="snapshot()">snapshot</h3> |
| <pre class="api-signature no-pretty-print">public final @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/ItemSnapshotList.html">ItemSnapshotList</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> T> <a href="/reference/androidx/paging/PagingDataAdapter.html#snapshot()">snapshot</a>()</pre> |
| <p>Returns a new <code><a href="/reference/androidx/paging/ItemSnapshotList.html">ItemSnapshotList</a></code> representing the currently presented items, including any placeholders if they are enabled.</p> |
| </div> |
| <div class="api-item"><a name="submitData-androidx.paging.PagingData-"></a><a name="submitdata"></a> |
| <h3 class="api-name" id="submitData(androidx.paging.PagingData)">submitData</h3> |
| <pre class="api-signature no-pretty-print">public final void <a href="/reference/androidx/paging/PagingDataAdapter.html#submitData(androidx.paging.PagingData)">submitData</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/PagingData.html">PagingData</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> T> pagingData)</pre> |
| <p>Present a <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> until it is invalidated by a call to <code><a href="/reference/androidx/paging/PagingDataAdapter.html#refresh()">refresh</a></code> or <code><a href="/reference/androidx/paging/PagingSource.html#invalidate()">PagingSource.invalidate</a></code>.</p> |
| <p>This method is typically used when collecting from a <code><a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a></code> produced by <code><a href="/reference/androidx/paging/Pager.html">Pager</a></code>. For RxJava or LiveData support, use the non-suspending overload of <code><a href="/reference/androidx/paging/PagingDataAdapter.html#submitData(androidx.paging.PagingData)">submitData</a></code>, which accepts a <code><a href="/reference/androidx/lifecycle/Lifecycle.html">Lifecycle</a></code>.</p> |
| <p>Note: This method suspends while it is actively presenting page loads from a <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code>, until the <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> is invalidated. Although cancellation will propagate to this call automatically, collecting from a <code><a href="/reference/androidx/paging/Pager.html#flow()">Pager.flow</a></code> with the intention of presenting the most up-to-date representation of your backing dataset should typically be done using <code><a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/index.html">collectLatest</a></code>.</p> |
| <pre class="prettyprint"> |
| import androidx.activity.viewModels |
| |
| class MyFlowActivity : AppCompatActivity() { |
| val pagingAdapter = UserPagingAdapter() |
| |
| override fun onCreate(savedInstanceState: Bundle?) { |
| super.onCreate(savedInstanceState) |
| val viewModel by viewModels<UserListViewModel>() |
| |
| lifecycleScope.launch { |
| viewModel.pagingFlow |
| .collectLatest { pagingData -> |
| // submitData suspends until loading this generation of data stops |
| // so be sure to use collectLatest {} when presenting a Flow<PagingData> |
| pagingAdapter.submitData(pagingData) |
| } |
| } |
| } |
| }</pre> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">See also</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/Pager.html">Pager</a></code></td> |
| <td></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="api-item"><a name="submitData(androidx.lifecycle.Lifecycle, androidx.paging.PagingData)"></a><a name="submitData-androidx.lifecycle.Lifecycle-androidx.paging.PagingData-"></a><a name="submitdata"></a> |
| <h3 class="api-name" id="submitData(androidx.lifecycle.Lifecycle,androidx.paging.PagingData)">submitData</h3> |
| <pre class="api-signature no-pretty-print">public final void <a href="/reference/androidx/paging/PagingDataAdapter.html#submitData(androidx.lifecycle.Lifecycle,androidx.paging.PagingData)">submitData</a>(<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/lifecycle/Lifecycle.html">Lifecycle</a> lifecycle,<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/PagingData.html">PagingData</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> T> pagingData<br>)</pre> |
| <p>Present a <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> until it is either invalidated or another call to <code><a href="/reference/androidx/paging/PagingDataAdapter.html#submitData(androidx.paging.PagingData)">submitData</a></code> is made.</p> |
| <p>This method is typically used when observing a RxJava or LiveData stream produced by <code><a href="/reference/androidx/paging/Pager.html">Pager</a></code>. For <code><a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a></code> support, use the suspending overload of <code><a href="/reference/androidx/paging/PagingDataAdapter.html#submitData(androidx.paging.PagingData)">submitData</a></code>, which automates cancellation via <code><a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-coroutine-scope/index.html">CoroutineScope</a></code> instead of relying of <code><a href="/reference/androidx/lifecycle/Lifecycle.html">Lifecycle</a></code>.</p> |
| <pre class="prettyprint"> |
| import androidx.activity.viewModels |
| |
| class MyLiveDataActivity : AppCompatActivity() { |
| val pagingAdapter = UserPagingAdapter() |
| |
| override fun onCreate(savedInstanceState: Bundle?) { |
| super.onCreate(savedInstanceState) |
| val viewModel by viewModels<UserListViewModel>() |
| |
| viewModel.pagingLiveData.observe(this) { pagingData -> |
| pagingAdapter.submitData(lifecycle, pagingData) |
| } |
| } |
| }</pre> |
| <pre class="prettyprint"> |
| import androidx.activity.viewModels |
| |
| class MyRxJava2Activity : AppCompatActivity() { |
| val pagingAdapter = UserPagingAdapter() |
| val disposable = CompositeDisposable() |
| |
| override fun onCreate(savedInstanceState: Bundle?) { |
| super.onCreate(savedInstanceState) |
| val viewModel by viewModels<UserListViewModel>() |
| |
| viewModel.pagingFlowable |
| .autoDispose(this) // Using AutoDispose to handle subscription lifecycle |
| .subscribe { pagingData -> |
| pagingAdapter.submitData(lifecycle, pagingData) |
| } |
| } |
| }</pre> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">See also</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/PagingDataAdapter.html#submitData(androidx.paging.PagingData)">submitData</a></code></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/Pager.html">Pager</a></code></td> |
| <td></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="api-item"><a name="withLoadStateFooter-androidx.paging.LoadStateAdapter-"></a><a name="withloadstatefooter"></a> |
| <h3 class="api-name" id="withLoadStateFooter(androidx.paging.LoadStateAdapter)">withLoadStateFooter</h3> |
| <pre class="api-signature no-pretty-print">public final @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/ConcatAdapter.html">ConcatAdapter</a> <a href="/reference/androidx/paging/PagingDataAdapter.html#withLoadStateFooter(androidx.paging.LoadStateAdapter)">withLoadStateFooter</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> ?> footer)</pre> |
| <p>Create a <code><a href="/reference/androidx/recyclerview/widget/ConcatAdapter.html">ConcatAdapter</a></code> with the provided <code><a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a></code>s displaying the <code><a href="/reference/androidx/paging/LoadState.html">LoadType.APPEND</a></code> as a list item at the start of the presented list.</p> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">See also</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a></code></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/PagingDataAdapter.html#withLoadStateHeaderAndFooter(androidx.paging.LoadStateAdapter,androidx.paging.LoadStateAdapter)">withLoadStateHeaderAndFooter</a></code></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/PagingDataAdapter.html#withLoadStateHeader(androidx.paging.LoadStateAdapter)">withLoadStateHeader</a></code></td> |
| <td></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="api-item"><a name="withLoadStateHeader-androidx.paging.LoadStateAdapter-"></a><a name="withloadstateheader"></a> |
| <h3 class="api-name" id="withLoadStateHeader(androidx.paging.LoadStateAdapter)">withLoadStateHeader</h3> |
| <pre class="api-signature no-pretty-print">public final @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/ConcatAdapter.html">ConcatAdapter</a> <a href="/reference/androidx/paging/PagingDataAdapter.html#withLoadStateHeader(androidx.paging.LoadStateAdapter)">withLoadStateHeader</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> ?> header)</pre> |
| <p>Create a <code><a href="/reference/androidx/recyclerview/widget/ConcatAdapter.html">ConcatAdapter</a></code> with the provided <code><a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a></code>s displaying the <code><a href="/reference/androidx/paging/LoadState.html">LoadType.PREPEND</a></code> as a list item at the end of the presented list.</p> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">See also</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a></code></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/PagingDataAdapter.html#withLoadStateHeaderAndFooter(androidx.paging.LoadStateAdapter,androidx.paging.LoadStateAdapter)">withLoadStateHeaderAndFooter</a></code></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/PagingDataAdapter.html#withLoadStateFooter(androidx.paging.LoadStateAdapter)">withLoadStateFooter</a></code></td> |
| <td></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="api-item"><a name="withLoadStateHeaderAndFooter(androidx.paging.LoadStateAdapter, androidx.paging.LoadStateAdapter)"></a><a name="withLoadStateHeaderAndFooter-androidx.paging.LoadStateAdapter-androidx.paging.LoadStateAdapter-"></a><a name="withloadstateheaderandfooter"></a> |
| <h3 class="api-name" id="withLoadStateHeaderAndFooter(androidx.paging.LoadStateAdapter,androidx.paging.LoadStateAdapter)">withLoadStateHeaderAndFooter</h3> |
| <pre class="api-signature no-pretty-print">public final @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/ConcatAdapter.html">ConcatAdapter</a> <a href="/reference/androidx/paging/PagingDataAdapter.html#withLoadStateHeaderAndFooter(androidx.paging.LoadStateAdapter,androidx.paging.LoadStateAdapter)">withLoadStateHeaderAndFooter</a>(<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> ?> header,<br> @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a><@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> ?> footer<br>)</pre> |
| <p>Create a <code><a href="/reference/androidx/recyclerview/widget/ConcatAdapter.html">ConcatAdapter</a></code> with the provided <code><a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a></code>s displaying the <code><a href="/reference/androidx/paging/LoadType.html#PREPEND">LoadType.PREPEND</a></code> and <code><a href="/reference/androidx/paging/LoadState.html">LoadType.APPEND</a></code>s as list items at the start and end respectively.</p> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">See also</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a></code></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/PagingDataAdapter.html#withLoadStateHeader(androidx.paging.LoadStateAdapter)">withLoadStateHeader</a></code></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><code><a href="/reference/androidx/paging/PagingDataAdapter.html#withLoadStateFooter(androidx.paging.LoadStateAdapter)">withLoadStateFooter</a></code></td> |
| <td></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| </div> |
| <div class="list"> |
| <h2>Protected methods</h2> |
| <div class="api-item"><a name="getItem-kotlin.Int-"></a><a name="getitem"></a> |
| <h3 class="api-name" id="getItem(kotlin.Int)">getItem</h3> |
| <pre class="api-signature no-pretty-print">protected final T <a href="/reference/androidx/paging/PagingDataAdapter.html#getItem(kotlin.Int)">getItem</a>(@<a href="/reference/androidx/annotation/IntRange.html">IntRange</a>(from = 0) int position)</pre> |
| <p>Returns the presented item at the specified position, notifying Paging of the item access to trigger any loads necessary to fulfill <code><a href="/reference/androidx/paging/PagingConfig.html#prefetchDistance()">prefetchDistance</a></code>.</p> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">Parameters</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code>@<a href="/reference/androidx/annotation/IntRange.html">IntRange</a>(from = 0) int position</code></td> |
| <td> |
| <p>Index of the presented item to return, including placeholders.</p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <colgroup> |
| <col width="40%"> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="100%">Returns</th> |
| </tr> |
| </thead> |
| <tbody class="list"> |
| <tr> |
| <td><code>T</code></td> |
| <td> |
| <p>The presented item at <code><a href="/reference/androidx/paging/PagingDataAdapter.html#getItem(kotlin.Int)">position</a></code>, <code>null</code> if it is a placeholder</p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| </div> |
| </body> |
| </html> |