<html devsite="true">
  <head>
    <title>LoadType</title>
{% setvar book_path %}/reference/kotlin/androidx/_book.yaml{% endsetvar %}
{% include "_shared/_reference-head-tags.html" %}
  </head>
  <body>
    <h1>LoadType</h1>
{% setvar page_path %}androidx/paging/LoadType.html{% endsetvar %}
{% setvar can_switch %}1{% endsetvar %}
{% include "reference/_kotlin_switcher2.md" %}
    <p>
      <pre>enum LoadType</pre>
    </p>
    <hr>
    <p>Type of load a <code><a href="/reference/kotlin/androidx/paging/PagingData.html">PagingData</a></code> can trigger a <code><a href="/reference/kotlin/androidx/paging/PagingSource.html">PagingSource</a></code> to perform.</p>
    <p><code><a href="/reference/kotlin/androidx/paging/LoadState.html">LoadState</a></code> of any <code><a href="/reference/kotlin/androidx/paging/LoadType.html">LoadType</a></code> may be observed for UI purposes by registering a listener via <code><a href="/reference/kotlin/androidx/paging/PagingDataAdapter.html#addLoadStateListener(kotlin.Function1)">androidx.paging.PagingDataAdapter.addLoadStateListener</a></code> or <code><a href="/reference/kotlin/androidx/paging/AsyncPagingDataDiffer.html#addLoadStateListener(kotlin.Function1)">androidx.paging.AsyncPagingDataDiffer.addLoadStateListener</a></code>.</p>
    <div class="devsite-table-wrapper">
      <table class="responsive">
        <thead>
          <tr>
            <th colspan="2">See also</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td><code><a href="/reference/kotlin/androidx/paging/LoadState.html">LoadState</a></code></td>
            <td width="100%"></td>
          </tr>
        </tbody>
      </table>
    </div>
    <h2>Summary</h2>
    <div class="devsite-table-wrapper">
      <table class="responsive">
        <thead>
          <tr>
            <th colspan="2"><h3>Enum Values</h3></th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td><code>APPEND</code></td>
            <td width="100%">
              <p>Load at the end of a <code><a href="/reference/kotlin/androidx/paging/PagingData.html">PagingData</a></code>.</p>
            </td>
          </tr>
          <tr>
            <td><code>PREPEND</code></td>
            <td width="100%">
              <p>Load at the start of a <code><a href="/reference/kotlin/androidx/paging/PagingData.html">PagingData</a></code>.</p>
            </td>
          </tr>
          <tr>
            <td><code>REFRESH</code></td>
            <td width="100%">
              <p><code><a href="/reference/kotlin/androidx/paging/PagingData.html">PagingData</a></code> content being refreshed, which can be a result of <code><a href="/reference/kotlin/androidx/paging/PagingSource.html">PagingSource</a></code> invalidation, refresh that may contain content updates, or the initial load.</p>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
    <div class="devsite-table-wrapper">
      <table class="responsive">
        <thead>
          <tr>
            <th colspan="2"><h3>Public properties</h3></th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td><code><a href="/reference/kotlin/kotlin/String.html">String</a></code></td>
            <td width="100%">
              <div><code><a href="/reference/kotlin/androidx/paging/LoadType.html#name()">name</a></code></div>
            </td>
          </tr>
          <tr>
            <td><code><a href="/reference/kotlin/kotlin/Int.html">Int</a></code></td>
            <td width="100%">
              <div><code><a href="/reference/kotlin/androidx/paging/LoadType.html#ordinal()">ordinal</a></code></div>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
    <h2>Enum Values</h2>
    <div>
      <h3 class="api-name" id="APPEND">APPEND</h3>
      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/paging/LoadType.APPEND.html">LoadType.APPEND</a>:&nbsp;<a href="/reference/kotlin/androidx/paging/LoadType.html">LoadType</a></pre>
      <p>Load at the end of a <code><a href="/reference/kotlin/androidx/paging/PagingData.html">PagingData</a></code>.</p>
    </div>
    <div>
      <h3 class="api-name" id="PREPEND">PREPEND</h3>
      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/paging/LoadType.PREPEND.html">LoadType.PREPEND</a>:&nbsp;<a href="/reference/kotlin/androidx/paging/LoadType.html">LoadType</a></pre>
      <p>Load at the start of a <code><a href="/reference/kotlin/androidx/paging/PagingData.html">PagingData</a></code>.</p>
    </div>
    <div>
      <h3 class="api-name" id="REFRESH">REFRESH</h3>
      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/paging/LoadType.REFRESH.html">LoadType.REFRESH</a>:&nbsp;<a href="/reference/kotlin/androidx/paging/LoadType.html">LoadType</a></pre>
      <p><code><a href="/reference/kotlin/androidx/paging/PagingData.html">PagingData</a></code> content being refreshed, which can be a result of <code><a href="/reference/kotlin/androidx/paging/PagingSource.html">PagingSource</a></code> invalidation, refresh that may contain content updates, or the initial load.</p>
    </div>
    <h2>Public properties</h2>
    <div><a name="getName()"></a><a name="setName()"></a><a name="getName--"></a><a name="setName--"></a>
      <h3 class="api-name" id="name()">name</h3>
      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/paging/LoadType.html#name()">name</a>:&nbsp;<a href="/reference/kotlin/kotlin/String.html">String</a></pre>
    </div>
    <div><a name="getOrdinal()"></a><a name="setOrdinal()"></a><a name="getOrdinal--"></a><a name="setOrdinal--"></a>
      <h3 class="api-name" id="ordinal()">ordinal</h3>
      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/paging/LoadType.html#ordinal()">ordinal</a>:&nbsp;<a href="/reference/kotlin/kotlin/Int.html">Int</a></pre>
    </div>
  </body>
</html>
