blob: 71fe67e31248d30e9bd8585d06e7f37ff1ee0c38 [file]
<html devsite="true">
<head>
<title>LoadStateAdapter</title>
{% setvar book_path %}/reference/androidx/_book.yaml{% endsetvar %}
{% include "_shared/_reference-head-tags.html" %}
</head>
<body>
<div itemscope="" itemtype="http://developers.google.com/ReferenceObject">
<meta itemprop="name" content="LoadStateAdapter">
<meta itemprop="path" content="androidx.paging">
<meta itemprop="property" content="displayLoadStateAsItem(androidx.paging.LoadState)">
<meta itemprop="property" content="getItemCount()">
<meta itemprop="property" content="getItemViewType(kotlin.Int)">
<meta itemprop="property" content="getLoadState()">
<meta itemprop="property" content="getStateViewType(androidx.paging.LoadState)">
<meta itemprop="property" content="onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder,androidx.paging.LoadState)">
<meta itemprop="property" content="onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder,kotlin.Int)">
<meta itemprop="property" content="onCreateViewHolder(android.view.ViewGroup,androidx.paging.LoadState)">
<meta itemprop="property" content="onCreateViewHolder(android.view.ViewGroup,kotlin.Int)">
<meta itemprop="property" content="setLoadState(androidx.paging.LoadState)">
<meta itemprop="language" content="JAVA">
</div>
<div id="header-block">
<div>
<h1>LoadStateAdapter</h1>
</div>
<div id="metadata-info-block">
<div id="source-link"><a href="https://cs.android.com/search?q=file:androidx/paging/LoadStateAdapter.kt+class:androidx.paging.LoadStateAdapter&amp;ss=androidx/platform/frameworks/support" class="external">View Source</a></div>
</div>
</div>
<div id="refdoc-switcher-placeholder"></div>
<p>
<pre>public abstract class <a href="/reference/androidx/paging/LoadStateAdapter.html">LoadStateAdapter</a>&lt;VH&nbsp;extends&nbsp;<a href="/reference/androidx/recyclerview/widget/RecyclerView.ViewHolder.html">RecyclerView.ViewHolder</a>&gt; 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">&nbsp;&nbsp;&nbsp;↳</td>
<td colspan="2"><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html">androidx.recyclerview.widget.RecyclerView.Adapter</a></td>
</tr>
<tr>
<td>&nbsp;</td>
<td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;↳</td>
<td colspan="1"><a href="/reference/androidx/paging/LoadStateAdapter.html">androidx.paging.LoadStateAdapter</a></td>
</tr>
</tbody>
</table>
</div>
<hr>
<p>Adapter for displaying a RecyclerView item based on <code><a href="/reference/androidx/paging/LoadState.html">LoadState</a></code>, such as a loading spinner, or a retry error button.</p>
<p>By default will use one shared <code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#getItemViewType(kotlin.Int)">view type</a></code> for all items.</p>
<p>By default, both <code><a href="/reference/androidx/paging/LoadState.Loading.html">LoadState.Loading</a></code> and <code><a href="/reference/androidx/paging/LoadState.Error.html">LoadState.Error</a></code> are presented as adapter items, other states are not. To configure this, override <code><a href="/reference/androidx/paging/LoadStateAdapter.html#displayLoadStateAsItem(androidx.paging.LoadState)">displayLoadStateAsItem</a></code>.</p>
<p>To present this Adapter as a header and or footer alongside your <code><a href="/reference/androidx/paging/PagingDataAdapter.html">PagingDataAdapter</a></code>, see <code><a href="/reference/androidx/paging/PagingDataAdapter.html#withLoadStateHeaderAndFooter(androidx.paging.LoadStateAdapter,androidx.paging.LoadStateAdapter)">PagingDataAdapter.withLoadStateHeaderAndFooter</a></code>, or use <code><a href="/reference/androidx/recyclerview/widget/ConcatAdapter.html">ConcatAdapter</a></code> directly to concatenate Adapters.</p>
<pre class="prettyprint lang-kotlin">
import androidx.paging.LoadState
import androidx.paging.LoadStateAdapter
import androidx.recyclerview.widget.RecyclerView
class LoadStateViewHolder(
parent: ViewGroup,
retry: () -&gt; Unit
) : RecyclerView.ViewHolder(
LayoutInflater.from(parent.context)
.inflate(R.layout.load_state_item, parent, false)
) {
private val progressBar: ProgressBar = itemView.findViewById(R.id.progress_bar)
private val errorMsg: TextView = itemView.findViewById(R.id.error_msg)
private val retry: Button = itemView.findViewById&lt;Button&gt;(R.id.retry_button)
.also { it.setOnClickListener { retry.invoke() } }
fun bind(loadState: LoadState) {
if (loadState is LoadState.Error) {
errorMsg.text = loadState.error.localizedMessage
}
progressBar.visibility = toVisibility(loadState is LoadState.Loading)
retry.visibility = toVisibility(loadState !is LoadState.Loading)
errorMsg.visibility = toVisibility(loadState !is LoadState.Loading)
}
private fun toVisibility(constraint: Boolean): Int = if (constraint) {
View.VISIBLE
} else {
View.GONE
}
}
/**
* Adapter which displays a loading spinner when `state = LoadState.Loading`, and an error
* message and retry button when `state is LoadState.Error`.
*/
class MyLoadStateAdapter(
private val retry: () -&gt; Unit
) : LoadStateAdapter&lt;LoadStateViewHolder&gt;() {
override fun onCreateViewHolder(parent: ViewGroup, loadState: LoadState) =
LoadStateViewHolder(parent, retry)
override fun onBindViewHolder(holder: LoadStateViewHolder, loadState: LoadState) =
holder.bind(loadState)
}</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#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>
<tr>
<td><code><a href="/reference/androidx/paging/PagingDataAdapter.html#withLoadStateFooter(androidx.paging.LoadStateAdapter)">withLoadStateFooter</a></code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<h2>Summary</h2>
<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>&lt;VH&nbsp;extends&nbsp;<a href="/reference/androidx/recyclerview/widget/RecyclerView.ViewHolder.html">RecyclerView.ViewHolder</a>&gt; <a href="/reference/androidx/paging/LoadStateAdapter.html#LoadStateAdapter()">LoadStateAdapter</a>()</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>boolean</code></td>
<td>
<div><code><a href="/reference/androidx/paging/LoadStateAdapter.html#displayLoadStateAsItem(androidx.paging.LoadState)">displayLoadStateAsItem</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadState.html">LoadState</a>&nbsp;loadState)</code></div>
<p>Returns true if the LoadState should be displayed as a list item when active.</p>
</td>
</tr>
<tr>
<td><code>final int</code></td>
<td>
<div><code><a href="/reference/androidx/paging/LoadStateAdapter.html#getItemCount()">getItemCount</a>()</code></div>
</td>
</tr>
<tr>
<td><code>final int</code></td>
<td>
<div><code><a href="/reference/androidx/paging/LoadStateAdapter.html#getItemViewType(kotlin.Int)">getItemViewType</a>(int&nbsp;position)</code></div>
</td>
</tr>
<tr>
<td><code>final @<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadState.html">LoadState</a></code></td>
<td>
<div><code><a href="/reference/androidx/paging/LoadStateAdapter.html#getLoadState()">getLoadState</a>()</code></div>
<p>LoadState to present in the adapter.</p>
</td>
</tr>
<tr>
<td><code>int</code></td>
<td>
<div><code><a href="/reference/androidx/paging/LoadStateAdapter.html#getStateViewType(androidx.paging.LoadState)">getStateViewType</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadState.html">LoadState</a>&nbsp;loadState)</code></div>
<p>Override this method to use different view types per LoadState.</p>
</td>
</tr>
<tr>
<td><code>abstract void</code></td>
<td>
<div><code><a href="/reference/androidx/paging/LoadStateAdapter.html#onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder,androidx.paging.LoadState)">onBindViewHolder</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> VH&nbsp;holder,&nbsp;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadState.html">LoadState</a>&nbsp;loadState)</code></div>
<p>Called to bind the passed LoadState to the ViewHolder.</p>
</td>
</tr>
<tr>
<td><code>final void</code></td>
<td>
<div><code><a href="/reference/androidx/paging/LoadStateAdapter.html#onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder,kotlin.Int)">onBindViewHolder</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> VH&nbsp;holder,&nbsp;int&nbsp;position)</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/paging/LoadStateAdapter.html#onCreateViewHolder(android.view.ViewGroup,androidx.paging.LoadState)">onCreateViewHolder</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/android/view/ViewGroup.html">ViewGroup</a>&nbsp;parent,&nbsp;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadState.html">LoadState</a>&nbsp;loadState)</code></div>
<p>Called to create a ViewHolder for the given LoadState.</p>
</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/paging/LoadStateAdapter.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>&nbsp;parent,&nbsp;int&nbsp;viewType)</code></div>
</td>
</tr>
<tr>
<td><code>final void</code></td>
<td>
<div><code><a href="/reference/androidx/paging/LoadStateAdapter.html#setLoadState(androidx.paging.LoadState)">setLoadState</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadState.html">LoadState</a>&nbsp;loadState)</code></div>
<p>LoadState to present in the adapter.</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&nbsp;p0,&nbsp;int&nbsp;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>&nbsp;p0,&nbsp;int&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html">RecyclerView.Adapter</a>&lt;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/RecyclerView.ViewHolder.html">RecyclerView.ViewHolder</a>&gt;&nbsp;p0,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/RecyclerView.ViewHolder.html">RecyclerView.ViewHolder</a>&nbsp;p1,<br>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;p2<br>)</code></div>
</td>
</tr>
<tr>
<td><code>long</code></td>
<td>
<div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#getItemId(kotlin.Int)">getItemId</a>(int&nbsp;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&nbsp;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&nbsp;p0,&nbsp;@<a href="/reference/androidx/annotation/Nullable.html">Nullable</a> <a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>&nbsp;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&nbsp;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&nbsp;p0,&nbsp;int&nbsp;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&nbsp;p0,&nbsp;int&nbsp;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&nbsp;p0,&nbsp;int&nbsp;p1,&nbsp;@<a href="/reference/androidx/annotation/Nullable.html">Nullable</a> <a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>&nbsp;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&nbsp;p0,&nbsp;int&nbsp;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&nbsp;p0,&nbsp;int&nbsp;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&nbsp;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>&nbsp;p0)</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&nbsp;p0,&nbsp;int&nbsp;p1,&nbsp;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/java/util/List.html">List</a>&lt;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>&gt;&nbsp;p2)</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>&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/RecyclerView.AdapterDataObserver.html">RecyclerView.AdapterDataObserver</a>&nbsp;p0<br>)</code></div>
</td>
</tr>
<tr>
<td><code>void</code></td>
<td>
<div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#setHasStableIds(kotlin.Boolean)">setHasStableIds</a>(boolean&nbsp;p0)</code></div>
</td>
</tr>
<tr>
<td><code>void</code></td>
<td>
<div><code><a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.html#setStateRestorationPolicy(androidx.recyclerview.widget.RecyclerView.Adapter.StateRestorationPolicy)">setStateRestorationPolicy</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/RecyclerView.Adapter.StateRestorationPolicy.html">RecyclerView.Adapter.StateRestorationPolicy</a>&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/recyclerview/widget/RecyclerView.AdapterDataObserver.html">RecyclerView.AdapterDataObserver</a>&nbsp;p0<br>)</code></div>
</td>
</tr>
</tbody>
</table>
</div>
</devsite-expandable> </td>
</tr>
</tbody>
</table>
</div>
<div class="list">
<h2>Public constructors</h2>
<div class="api-item"><a name="LoadStateAdapter--"></a><a name="loadstateadapter"></a>
<div class="api-name-block">
<div>
<h3 id="LoadStateAdapter()">LoadStateAdapter</h3>
</div>
</div>
<pre class="api-signature no-pretty-print">public&nbsp;&lt;VH&nbsp;extends&nbsp;<a href="/reference/androidx/recyclerview/widget/RecyclerView.ViewHolder.html">RecyclerView.ViewHolder</a>&gt; <a href="/reference/androidx/paging/LoadStateAdapter.html#LoadStateAdapter()">LoadStateAdapter</a>()</pre>
</div>
</div>
<div class="list">
<h2>Public methods</h2>
<div class="api-item"><a name="displayLoadStateAsItem-androidx.paging.LoadState-"></a><a name="displayloadstateasitem"></a>
<div class="api-name-block">
<div>
<h3 id="displayLoadStateAsItem(androidx.paging.LoadState)">displayLoadStateAsItem</h3>
</div>
</div>
<pre class="api-signature no-pretty-print">public&nbsp;boolean&nbsp;<a href="/reference/androidx/paging/LoadStateAdapter.html#displayLoadStateAsItem(androidx.paging.LoadState)">displayLoadStateAsItem</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadState.html">LoadState</a>&nbsp;loadState)</pre>
<p>Returns true if the LoadState should be displayed as a list item when active.</p>
<p>By default, <code><a href="/reference/androidx/paging/LoadState.Loading.html">LoadState.Loading</a></code> and <code><a href="/reference/androidx/paging/LoadState.Error.html">LoadState.Error</a></code> present as list items, others do not.</p>
</div>
<div class="api-item"><a name="getItemCount--"></a><a name="getitemcount"></a>
<div class="api-name-block">
<div>
<h3 id="getItemCount()">getItemCount</h3>
</div>
</div>
<pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;int&nbsp;<a href="/reference/androidx/paging/LoadStateAdapter.html#getItemCount()">getItemCount</a>()</pre>
</div>
<div class="api-item"><a name="getItemViewType-kotlin.Int-"></a><a name="getitemviewtype"></a>
<div class="api-name-block">
<div>
<h3 id="getItemViewType(kotlin.Int)">getItemViewType</h3>
</div>
</div>
<pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;int&nbsp;<a href="/reference/androidx/paging/LoadStateAdapter.html#getItemViewType(kotlin.Int)">getItemViewType</a>(int&nbsp;position)</pre>
</div>
<div class="api-item"><a name="getLoadState--"></a><a name="getloadstate"></a>
<div class="api-name-block">
<div>
<h3 id="getLoadState()">getLoadState</h3>
</div>
</div>
<pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadState.html">LoadState</a>&nbsp;<a href="/reference/androidx/paging/LoadStateAdapter.html#getLoadState()">getLoadState</a>()</pre>
<p>LoadState to present in the adapter.</p>
<p>Changing this property will immediately notify the Adapter to change the item it's presenting.</p>
</div>
<div class="api-item"><a name="getStateViewType-androidx.paging.LoadState-"></a><a name="getstateviewtype"></a>
<div class="api-name-block">
<div>
<h3 id="getStateViewType(androidx.paging.LoadState)">getStateViewType</h3>
</div>
</div>
<pre class="api-signature no-pretty-print">public&nbsp;int&nbsp;<a href="/reference/androidx/paging/LoadStateAdapter.html#getStateViewType(androidx.paging.LoadState)">getStateViewType</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadState.html">LoadState</a>&nbsp;loadState)</pre>
<p>Override this method to use different view types per LoadState.</p>
<p>By default, this LoadStateAdapter only uses a single view type.</p>
</div>
<div class="api-item"><a name="onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder, androidx.paging.LoadState)"></a><a name="onBindViewHolder-androidx.recyclerview.widget.RecyclerView.ViewHolder-androidx.paging.LoadState-"></a><a name="onbindviewholder"></a>
<div class="api-name-block">
<div>
<h3 id="onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder,androidx.paging.LoadState)">onBindViewHolder</h3>
</div>
</div>
<pre class="api-signature no-pretty-print">public&nbsp;abstract&nbsp;void&nbsp;<a href="/reference/androidx/paging/LoadStateAdapter.html#onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder,androidx.paging.LoadState)">onBindViewHolder</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> VH&nbsp;holder,&nbsp;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadState.html">LoadState</a>&nbsp;loadState)</pre>
<p>Called to bind the passed LoadState to the ViewHolder.</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> <a href="/reference/androidx/paging/LoadState.html">LoadState</a>&nbsp;loadState</code></td>
<td>
<p>LoadState to display.</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/LoadStateAdapter.html#getItemViewType(kotlin.Int)">getItemViewType</a></code></td>
<td></td>
</tr>
<tr>
<td><code><a href="/reference/androidx/paging/LoadStateAdapter.html#displayLoadStateAsItem(androidx.paging.LoadState)">displayLoadStateAsItem</a></code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="api-item"><a name="onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder, kotlin.Int)"></a><a name="onBindViewHolder-androidx.recyclerview.widget.RecyclerView.ViewHolder-kotlin.Int-"></a><a name="onbindviewholder"></a>
<div class="api-name-block">
<div>
<h3 id="onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder,kotlin.Int)">onBindViewHolder</h3>
</div>
</div>
<pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;void&nbsp;<a href="/reference/androidx/paging/LoadStateAdapter.html#onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder,kotlin.Int)">onBindViewHolder</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> VH&nbsp;holder,&nbsp;int&nbsp;position)</pre>
</div>
<div class="api-item"><a name="onCreateViewHolder(android.view.ViewGroup, androidx.paging.LoadState)"></a><a name="onCreateViewHolder-android.view.ViewGroup-androidx.paging.LoadState-"></a><a name="oncreateviewholder"></a>
<div class="api-name-block">
<div>
<h3 id="onCreateViewHolder(android.view.ViewGroup,androidx.paging.LoadState)">onCreateViewHolder</h3>
</div>
</div>
<pre class="api-signature no-pretty-print">public&nbsp;abstract&nbsp;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> VH&nbsp;<a href="/reference/androidx/paging/LoadStateAdapter.html#onCreateViewHolder(android.view.ViewGroup,androidx.paging.LoadState)">onCreateViewHolder</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/android/view/ViewGroup.html">ViewGroup</a>&nbsp;parent,&nbsp;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadState.html">LoadState</a>&nbsp;loadState)</pre>
<p>Called to create a ViewHolder for the given LoadState.</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> <a href="https://developer.android.com/reference/android/view/ViewGroup.html">ViewGroup</a>&nbsp;parent</code></td>
<td>
<p>The ViewGroup into which the new View will be added after it is bound to an adapter position.</p>
</td>
</tr>
<tr>
<td><code>@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadState.html">LoadState</a>&nbsp;loadState</code></td>
<td>
<p>The LoadState to be initially presented by the new ViewHolder.</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/LoadStateAdapter.html#getItemViewType(kotlin.Int)">getItemViewType</a></code></td>
<td></td>
</tr>
<tr>
<td><code><a href="/reference/androidx/paging/LoadStateAdapter.html#displayLoadStateAsItem(androidx.paging.LoadState)">displayLoadStateAsItem</a></code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="api-item"><a name="onCreateViewHolder(android.view.ViewGroup, kotlin.Int)"></a><a name="onCreateViewHolder-android.view.ViewGroup-kotlin.Int-"></a><a name="oncreateviewholder"></a>
<div class="api-name-block">
<div>
<h3 id="onCreateViewHolder(android.view.ViewGroup,kotlin.Int)">onCreateViewHolder</h3>
</div>
</div>
<pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> VH&nbsp;<a href="/reference/androidx/paging/LoadStateAdapter.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>&nbsp;parent,&nbsp;int&nbsp;viewType)</pre>
</div>
<div class="api-item"><a name="setLoadState-androidx.paging.LoadState-"></a><a name="setloadstate"></a>
<div class="api-name-block">
<div>
<h3 id="setLoadState(androidx.paging.LoadState)">setLoadState</h3>
</div>
</div>
<pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;void&nbsp;<a href="/reference/androidx/paging/LoadStateAdapter.html#setLoadState(androidx.paging.LoadState)">setLoadState</a>(@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="/reference/androidx/paging/LoadState.html">LoadState</a>&nbsp;loadState)</pre>
<p>LoadState to present in the adapter.</p>
<p>Changing this property will immediately notify the Adapter to change the item it's presenting.</p>
</div>
</div>
</body>
</html>