| <html devsite="true"> |
| <head> |
| <title>PagingData.Companion</title> |
| {% setvar book_path %}/reference/androidx/_book.yaml{% endsetvar %} |
| {% include "_shared/_reference-head-tags.html" %} |
| </head> |
| <body> |
| <h1>PagingData.Companion</h1> |
| {% setvar page_path %}androidx/paging/PagingData.Companion.html{% endsetvar %} |
| {% setvar can_switch %}1{% endsetvar %} |
| {% include "reference/_java_switcher2.md" %} |
| <p> |
| <pre>object PagingData.Companion</pre> |
| </p> |
| <hr> |
| <h2>Summary</h2> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <thead> |
| <tr> |
| <th colspan="2"><h3>Public methods</h3></th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td><code>final <a href="/reference/androidx/paging/PagingData.html">PagingData</a><T></code></td> |
| <td width="100%"> |
| <div><code><T extends <a href="/reference/java/lang/Object.html">Object</a>> <a href="/reference/androidx/paging/PagingData.Companion.html#empty()">empty</a>()</code></div> |
| <p>Create a <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> that immediately displays an empty list of items when submitted to androidx.paging.AsyncPagingDataAdapter.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final <a href="/reference/androidx/paging/PagingData.html">PagingData</a><T></code></td> |
| <td width="100%"> |
| <div><code><T extends <a href="/reference/java/lang/Object.html">Object</a>> <a href="/reference/androidx/paging/PagingData.Companion.html#from(kotlin.collections.List)">from</a>(<a href="/reference/java/util/List.html">List</a><T> data)</code></div> |
| <p>Create a <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> that immediately displays a static list of items when submitted to androidx.paging.AsyncPagingDataAdapter.</p> |
| </td> |
| </tr> |
| <tr> |
| <td><code>final <a href="/reference/androidx/paging/PagingData.html">PagingData</a><R></code></td> |
| <td width="100%"> |
| <div><code><T extends R, R extends <a href="/reference/java/lang/Object.html">Object</a>> <a href="/reference/androidx/paging/PagingData.Companion.html#insertSeparators(androidx.paging.PagingData,kotlin.Function2)">insertSeparators</a>(<br> <a href="/reference/androidx/paging/PagingData.html">PagingData</a><T> pagingData,<br> <a href="/reference/kotlin/jvm/functions/Function2.html">Function2</a><T, T, R> generator<br>)</code></div> |
| <p>Returns a <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> containing each original element, with an optional separator generated by <code><a href="/reference/androidx/paging/PagingData.Companion.html#generator()">generator</a></code>, given the elements before and after (or null, in boundary conditions).</p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <h2>Public methods</h2> |
| <div><a name="empty--"></a> |
| <h3 class="api-name" id="empty()">empty</h3> |
| <pre class="api-signature no-pretty-print">public final <a href="/reference/androidx/paging/PagingData.html">PagingData</a><T> <T extends <a href="/reference/java/lang/Object.html">Object</a>> <a href="/reference/androidx/paging/PagingData.Companion.html#empty()">empty</a>()</pre> |
| <p>Create a <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> that immediately displays an empty list of items when submitted to <a href="[androidx.paging.AsyncPagingDataAdapter]">androidx.paging.AsyncPagingDataAdapter</a>.</p> |
| </div> |
| <div><a name="from-kotlin.collections.List-"></a> |
| <h3 class="api-name" id="from(kotlin.collections.List)">from</h3> |
| <pre class="api-signature no-pretty-print">public final <a href="/reference/androidx/paging/PagingData.html">PagingData</a><T> <T extends <a href="/reference/java/lang/Object.html">Object</a>> <a href="/reference/androidx/paging/PagingData.Companion.html#from(kotlin.collections.List)">from</a>(<a href="/reference/java/util/List.html">List</a><T> data)</pre> |
| <p>Create a <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> that immediately displays a static list of items when submitted to <a href="[androidx.paging.AsyncPagingDataAdapter]">androidx.paging.AsyncPagingDataAdapter</a>.</p> |
| <div class="devsite-table-wrapper"> |
| <table class="responsive"> |
| <thead> |
| <tr> |
| <th colspan="2">Parameters</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td><code><a href="/reference/java/util/List.html">List</a><T> data</code></td> |
| <td width="100%"> |
| <p>Static list of <code><a href="/reference/androidx/paging/PagingData.Companion.html#from(kotlin.collections.List)">T</a></code> to display.</p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div><a name="insertSeparators(androidx.paging.PagingData, kotlin.Function2)"></a><a name="insertSeparators-androidx.paging.PagingData-kotlin.Function2-"></a> |
| <h3 class="api-name" id="insertSeparators(androidx.paging.PagingData,kotlin.Function2)">insertSeparators</h3> |
| <pre class="api-signature no-pretty-print">@<a href="/reference/[JVM root]/<ERROR CLASS>.html"><ERROR CLASS></a><br>public final <a href="/reference/androidx/paging/PagingData.html">PagingData</a><R> <T extends R, R extends <a href="/reference/java/lang/Object.html">Object</a>> <a href="/reference/androidx/paging/PagingData.Companion.html#insertSeparators(androidx.paging.PagingData,kotlin.Function2)">insertSeparators</a>(<br> <a href="/reference/androidx/paging/PagingData.html">PagingData</a><T> pagingData,<br> <a href="/reference/kotlin/jvm/functions/Function2.html">Function2</a><T, T, R> generator<br>)</pre> |
| <p>Returns a <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> containing each original element, with an optional separator generated by <code><a href="/reference/androidx/paging/PagingData.Companion.html#generator()">generator</a></code>, given the elements before and after (or null, in boundary conditions).</p> |
| <p>Note that this transform is applied asynchronously, as pages are loaded. Potential separators between pages are only computed once both pages are loaded.</p> |
| <p><b>Kotlin callers should instead use the extension function <code><a href="/reference/androidx/paging/PagingData.Companion.html#insertSeparators(androidx.paging.PagingData,kotlin.Function2)">insertSeparators</a></code></b></p> |
| <pre class="prettyprint">/*<br> * Create letter separators in an alphabetically sorted list.<br> *<br> * For example, if the input is:<br> * "apple", "apricot", "banana", "carrot"<br> *<br> * The operator would output:<br> * "A", "apple", "apricot", "B", "banana", "C", "carrot"<br> */<br>pagingDataStream.map((pagingData) -><br> // map outer stream, so we can perform transformations on each paging generation<br> PagingData.insertSeparators(pagingData,<br> (@Nullable String before, @Nullable String after) -> {<br> if (after != null && (before == null<br> || before.charAt(0) != after.charAt(0))) {<br> // separator - after is first item that starts with its first letter<br> return Character.toString(Character.toUpperCase(after.charAt(0)));<br> } else {<br> // no separator - either end of list, or first<br> // letters of items are the same<br> return null;<br> }<br> }));<br><br>/*<br> * Create letter separators in an alphabetically sorted list of Items, with UiModel objects.<br> *<br> * For example, if the input is (each an `Item`):<br> * "apple", "apricot", "banana", "carrot"<br> *<br> * The operator would output a list of UiModels corresponding to:<br> * "A", "apple", "apricot", "B", "banana", "C", "carrot"<br> */<br>pagingDataStream.map((itemPagingData) -> {<br> // map outer stream, so we can perform transformations on each paging generation<br><br> // first convert items in stream to UiModel.Item<br> PagingData<UiModel.ItemModel> itemModelPagingData =<br> itemPagingData.map(UiModel.ItemModel::new);<br><br> // Now insert UiModel.Separators, which makes the PagingData of generic type UiModel<br> return PagingData.insertSeparators(<br> itemModelPagingData,<br> (@Nullable UiModel.ItemModel before, @Nullable UiModel.ItemModel after) -> {<br> if (after != null && (before == null<br> || before.item.label.charAt(0) != after.item.label.charAt(0))) {<br> // separator - after is first item that starts with its first letter<br> return new UiModel.SeparatorModel(<br> Character.toUpperCase(after.item.label.charAt(0)));<br> } else {<br> // no separator - either end of list, or first<br> // letters of items are the same<br> return null;<br> }<br> });<br>});<br><br>public class UiModel {<br> static class ItemModel extends UiModel {<br> public Item item;<br> ItemModel(Item item) {<br> this.item = item;<br> }<br> }<br> static class SeparatorModel extends UiModel {<br> public char character;<br> SeparatorModel(char character) {<br> this.character = character;<br> }<br> }<br>}</pre> |
| </div> |
| </body> |
| </html> |