blob: d8e14bd3305ef5a14d26de95582dd020eb48dcf1 [file] [log] [blame]
<html devsite="true">
<head>
<title>PagingSource.LoadResult.Page</title>
{% setvar book_path %}/reference/androidx/_book.yaml{% endsetvar %}
{% include "_shared/_reference-head-tags.html" %}
</head>
<body>
<div id="metadata-info-block"></div>
<h1>PagingSource.LoadResult.Page</h1>
<p>
<pre>public final data class <a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html">PagingSource.LoadResult.Page</a>&lt;Key&nbsp;extends&nbsp;<a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>,&nbsp;Value&nbsp;extends&nbsp;<a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>&gt; extends <a href="/reference/androidx/paging/PagingSource.LoadResult.html">PagingSource.LoadResult</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/paging/PagingSource.LoadResult.html">androidx.paging.PagingSource.LoadResult</a></td>
</tr>
<tr>
<td>&nbsp;</td>
<td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;↳</td>
<td colspan="1"><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html">androidx.paging.PagingSource.LoadResult.Page</a></td>
</tr>
</tbody>
</table>
</div>
<hr>
<p>Success result object for <code><a href="/reference/androidx/paging/PagingSource.html#load(androidx.paging.PagingSource.LoadParams)">PagingSource.load</a></code>.</p>
<pre class="prettyprint">// One common method of pagination is to use next (and optionally previous) tokens.
// The below code shows you how to
data class NetworkResponseObject(
val items: List&lt;Item&gt;,
val next: String,
val approximateItemsRemaining: Int
)
// The following shows how you use convert such a response loaded in PagingSource.load() to
// a Page, which can be returned from that method
fun NetworkResponseObject.toPage() = LoadResult.Page(
data = items,
prevKey = null, // this implementation can only append, can't load a prepend
nextKey = next, // next token will be the params.key of a subsequent append load
itemsAfter = approximateItemsRemaining
)</pre>
<pre class="prettyprint">// If you load by page number, the response may not define how to load the next page.
data class NetworkResponseObject(
val items: List&lt;Item&gt;
)
// The following shows how you use the current page number (e.g., the current key in
// PagingSource.load() to convert a response into a Page, which can be returned from that method
fun NetworkResponseObject.toPage(pageNumber: Int): LoadResult.Page&lt;Int, Item&gt; {
return LoadResult.Page(
data = items,
// Since 0 is the lowest page number, return null to signify no more pages
// should be loaded before it.
prevKey = if (pageNumber &gt; 0) pageNumber - 1 else null,
// This API defines that it's out of data when a page returns empty. When out of
// data, we return `null` to signify no more pages should be loaded
// If the response instead
nextKey = if (items.isNotEmpty()) pageNumber + 1 else null
)
}</pre>
<h2>Summary</h2>
<div class="devsite-table-wrapper">
<table class="responsive">
<colgroup>
<col width="40%">
<col>
</colgroup>
<thead>
<tr>
<th colspan="100%"><h3>Nested types</h3></th>
</tr>
</thead>
<tbody class="list">
<tr>
<td>
<div><code>public static class <a href="/reference/androidx/paging/PagingSource.LoadResult.Page.Companion.html">PagingSource.LoadResult.Page.Companion</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>Constants</h3></th>
</tr>
</thead>
<tbody class="list">
<tr>
<td width="40%"><code>static&nbsp;final int</code></td>
<td>
<div><code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.Companion.html#COUNT_UNDEFINED()">COUNT_UNDEFINED</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 fields</h3></th>
</tr>
</thead>
<tbody class="list">
<tr>
<td width="40%"><code>final @<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> Value&gt;</code></td>
<td>
<div><code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html#data()">data</a></code></div>
<p>Loaded data</p>
</td>
</tr>
<tr>
<td width="40%"><code>final int</code></td>
<td>
<div><code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html#itemsAfter()">itemsAfter</a></code></div>
<p>Optional count of items after the loaded data.</p>
</td>
</tr>
<tr>
<td width="40%"><code>final int</code></td>
<td>
<div><code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html#itemsBefore()">itemsBefore</a></code></div>
<p>Optional count of items before the loaded data.</p>
</td>
</tr>
<tr>
<td width="40%"><code>final Key</code></td>
<td>
<div><code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html#nextKey()">nextKey</a></code></div>
<p><code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html">Key</a></code> for next page if more data can be loaded in that direction, <code>null</code> otherwise.</p>
</td>
</tr>
<tr>
<td width="40%"><code>final Key</code></td>
<td>
<div><code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html#prevKey()">prevKey</a></code></div>
<p><code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html">Key</a></code> for previous page if more data can be loaded in that direction, <code>null</code> otherwise.</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>&lt;Key&nbsp;extends&nbsp;<a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>,&nbsp;Value&nbsp;extends&nbsp;<a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>&gt; <a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html#Page(kotlin.collections.List,kotlin.Any,kotlin.Any)">Page</a>(<br>&nbsp;&nbsp;&nbsp;&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> Value&gt;&nbsp;data,<br>&nbsp;&nbsp;&nbsp;&nbsp;Key&nbsp;prevKey,<br>&nbsp;&nbsp;&nbsp;&nbsp;Key&nbsp;nextKey<br>)</code></div>
<p>Success result object for <code><a href="/reference/androidx/paging/PagingSource.html#load(androidx.paging.PagingSource.LoadParams)">PagingSource.load</a></code>.</p>
</td>
</tr>
<tr>
<td>
<div><code>&lt;Key&nbsp;extends&nbsp;<a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>,&nbsp;Value&nbsp;extends&nbsp;<a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>&gt; <a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html#Page(kotlin.collections.List,kotlin.Any,kotlin.Any,kotlin.Int,kotlin.Int)">Page</a>(<br>&nbsp;&nbsp;&nbsp;&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> Value&gt;&nbsp;data,<br>&nbsp;&nbsp;&nbsp;&nbsp;Key&nbsp;prevKey,<br>&nbsp;&nbsp;&nbsp;&nbsp;Key&nbsp;nextKey,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="/reference/androidx/annotation/IntRange.html">IntRange</a>(from&nbsp;=&nbsp;-2147483648) int&nbsp;itemsBefore,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="/reference/androidx/annotation/IntRange.html">IntRange</a>(from&nbsp;=&nbsp;-2147483648) int&nbsp;itemsAfter<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 width="40%"><code>@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/java/lang/String.html">String</a></code></td>
<td>
<div><code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html#toString()">toString</a>()</code></div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="list">
<h2>Constants</h2>
<div class="api-item"><a name="getCOUNT_UNDEFINED()"></a><a name="setCOUNT_UNDEFINED()"></a><a name="getCOUNT_UNDEFINED--"></a><a name="setCOUNT_UNDEFINED--"></a>
<h3 class="api-name" id="COUNT_UNDEFINED()">COUNT_UNDEFINED</h3>
<pre class="api-signature no-pretty-print">public&nbsp;static&nbsp;final&nbsp;int&nbsp;<a href="/reference/androidx/paging/PagingSource.LoadResult.Page.Companion.html#COUNT_UNDEFINED()">COUNT_UNDEFINED</a></pre>
</div>
</div>
<div class="list">
<h2>Public fields</h2>
<div class="api-item"><a name="getData()"></a><a name="setData()"></a><a name="getData--"></a><a name="setData--"></a>
<h3 class="api-name" id="data()">data</h3>
<pre class="api-signature no-pretty-print">public&nbsp;final&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> Value&gt;&nbsp;<a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html#data()">data</a></pre>
<p>Loaded data</p>
</div>
<div class="api-item"><a name="getItemsAfter()"></a><a name="setItemsAfter()"></a><a name="getItemsAfter--"></a><a name="setItemsAfter--"></a>
<h3 class="api-name" id="itemsAfter()">itemsAfter</h3>
<pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;int&nbsp;<a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html#itemsAfter()">itemsAfter</a></pre>
<p>Optional count of items after the loaded data.</p>
</div>
<div class="api-item"><a name="getItemsBefore()"></a><a name="setItemsBefore()"></a><a name="getItemsBefore--"></a><a name="setItemsBefore--"></a>
<h3 class="api-name" id="itemsBefore()">itemsBefore</h3>
<pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;int&nbsp;<a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html#itemsBefore()">itemsBefore</a></pre>
<p>Optional count of items before the loaded data.</p>
</div>
<div class="api-item"><a name="getNextKey()"></a><a name="setNextKey()"></a><a name="getNextKey--"></a><a name="setNextKey--"></a>
<h3 class="api-name" id="nextKey()">nextKey</h3>
<pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;Key&nbsp;<a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html#nextKey()">nextKey</a></pre>
<p><code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html">Key</a></code> for next page if more data can be loaded in that direction, <code>null</code> otherwise.</p>
</div>
<div class="api-item"><a name="getPrevKey()"></a><a name="setPrevKey()"></a><a name="getPrevKey--"></a><a name="setPrevKey--"></a>
<h3 class="api-name" id="prevKey()">prevKey</h3>
<pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;Key&nbsp;<a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html#prevKey()">prevKey</a></pre>
<p><code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html">Key</a></code> for previous page if more data can be loaded in that direction, <code>null</code> otherwise.</p>
</div>
</div>
<div class="list">
<h2>Public constructors</h2>
<div class="api-item"><a name="Page(kotlin.collections.List, kotlin.Any, kotlin.Any)"></a><a name="Page-kotlin.collections.List-kotlin.Any-kotlin.Any-"></a><a name="page"></a>
<h3 class="api-name" id="Page(kotlin.collections.List,kotlin.Any,kotlin.Any)">Page</h3>
<pre class="api-signature no-pretty-print">public&nbsp;&lt;Key&nbsp;extends&nbsp;<a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>,&nbsp;Value&nbsp;extends&nbsp;<a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>&gt; <a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html#Page(kotlin.collections.List,kotlin.Any,kotlin.Any)">Page</a>(<br>&nbsp;&nbsp;&nbsp;&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> Value&gt;&nbsp;data,<br>&nbsp;&nbsp;&nbsp;&nbsp;Key&nbsp;prevKey,<br>&nbsp;&nbsp;&nbsp;&nbsp;Key&nbsp;nextKey<br>)</pre>
<p>Success result object for <code><a href="/reference/androidx/paging/PagingSource.html#load(androidx.paging.PagingSource.LoadParams)">PagingSource.load</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 width="40%"><code>@<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> Value&gt;&nbsp;data</code></td>
<td>
<p>Loaded data</p>
</td>
</tr>
<tr>
<td width="40%"><code>Key&nbsp;prevKey</code></td>
<td>
<p><code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html">Key</a></code> for previous page if more data can be loaded in that direction, <code>null</code> otherwise.</p>
</td>
</tr>
<tr>
<td width="40%"><code>Key&nbsp;nextKey</code></td>
<td>
<p><code><a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html">Key</a></code> for next page if more data can be loaded in that direction, <code>null</code> otherwise.</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="api-item"><a name="Page(kotlin.collections.List, kotlin.Any, kotlin.Any, kotlin.Int, kotlin.Int)"></a><a name="Page-kotlin.collections.List-kotlin.Any-kotlin.Any-kotlin.Int-kotlin.Int-"></a><a name="page"></a>
<h3 class="api-name" id="Page(kotlin.collections.List,kotlin.Any,kotlin.Any,kotlin.Int,kotlin.Int)">Page</h3>
<pre class="api-signature no-pretty-print">public&nbsp;&lt;Key&nbsp;extends&nbsp;<a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>,&nbsp;Value&nbsp;extends&nbsp;<a href="https://developer.android.com/reference/java/lang/Object.html">Object</a>&gt; <a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html#Page(kotlin.collections.List,kotlin.Any,kotlin.Any,kotlin.Int,kotlin.Int)">Page</a>(<br>&nbsp;&nbsp;&nbsp;&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> Value&gt;&nbsp;data,<br>&nbsp;&nbsp;&nbsp;&nbsp;Key&nbsp;prevKey,<br>&nbsp;&nbsp;&nbsp;&nbsp;Key&nbsp;nextKey,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="/reference/androidx/annotation/IntRange.html">IntRange</a>(from&nbsp;=&nbsp;-2147483648) int&nbsp;itemsBefore,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="/reference/androidx/annotation/IntRange.html">IntRange</a>(from&nbsp;=&nbsp;-2147483648) int&nbsp;itemsAfter<br>)</pre>
</div>
</div>
<div class="list">
<h2>Public methods</h2>
<div class="api-item"><a name="toString--"></a><a name="tostring"></a>
<h3 class="api-name" id="toString()">toString</h3>
<pre class="api-signature no-pretty-print">public&nbsp;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/java/lang/String.html">String</a>&nbsp;<a href="/reference/androidx/paging/PagingSource.LoadResult.Page.html#toString()">toString</a>()</pre>
</div>
</div>
</body>
</html>