<html devsite="true">
  <head>
    <title>PageKeyedDataSource.LoadInitialParams</title>
{% setvar book_path %}/reference/kotlin/androidx/_book.yaml{% endsetvar %}
{% include "_shared/_reference-head-tags.html" %}
  </head>
  <body>
    <h1>PageKeyedDataSource.LoadInitialParams</h1>
{% setvar page_path %}androidx/paging/PageKeyedDataSource.LoadInitialParams.html{% endsetvar %}
{% setvar can_switch %}1{% endsetvar %}
{% include "reference/_kotlin_switcher2.md" %}
    <p>
      <pre>open class PageKeyedDataSource.LoadInitialParams&lt;Key&nbsp;:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>&gt;</pre>
    </p>
    <hr>
    <p>Holder object for inputs to <code><a href="/reference/kotlin/androidx/paging/PageKeyedDataSource.html#loadInitial(androidx.paging.PageKeyedDataSource.LoadInitialParams)">loadInitial</a></code>.</p>
    <div class="devsite-table-wrapper">
      <table class="responsive">
        <thead>
          <tr>
            <th colspan="2">Parameters</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td><code>&lt;Key&nbsp;:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>&gt;</code></td>
            <td width="100%">
              <p>Type of data used to query pages.</p>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
    <h2>Summary</h2>
    <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="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a></code></td>
            <td width="100%">
              <div><code><a href="/reference/kotlin/androidx/paging/PageKeyedDataSource.LoadInitialParams.html#placeholdersEnabled()">placeholdersEnabled</a></code></div>
              <p>Defines whether placeholders are enabled, and whether the loaded total count will be ignored.</p>
            </td>
          </tr>
          <tr>
            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a></code></td>
            <td width="100%">
              <div><code><a href="/reference/kotlin/androidx/paging/PageKeyedDataSource.LoadInitialParams.html#requestedLoadSize()">requestedLoadSize</a></code></div>
              <p>Requested number of items to load.</p>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
    <div class="devsite-table-wrapper">
      <table class="responsive">
        <thead>
          <tr>
            <th colspan="2"><h3>Public constructors</h3></th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>
              <div><code>&lt;Key&nbsp;:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>&gt; <a href="/reference/kotlin/androidx/paging/PageKeyedDataSource.LoadInitialParams.html#LoadInitialParams(kotlin.Int,kotlin.Boolean)">LoadInitialParams</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;requestedLoadSize:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;placeholdersEnabled:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a><br>)</code></div>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
    <h2>Public properties</h2>
    <div><a name="getPlaceholdersEnabled()"></a><a name="setPlaceholdersEnabled()"></a><a name="getPlaceholdersEnabled--"></a><a name="setPlaceholdersEnabled--"></a>
      <h3 class="api-name" id="placeholdersEnabled()">placeholdersEnabled</h3>
      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/paging/PageKeyedDataSource.LoadInitialParams.html#placeholdersEnabled()">placeholdersEnabled</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a></pre>
      <p>Defines whether placeholders are enabled, and whether the loaded total count will be ignored.</p>
    </div>
    <div><a name="getRequestedLoadSize()"></a><a name="setRequestedLoadSize()"></a><a name="getRequestedLoadSize--"></a><a name="setRequestedLoadSize--"></a>
      <h3 class="api-name" id="requestedLoadSize()">requestedLoadSize</h3>
      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/paging/PageKeyedDataSource.LoadInitialParams.html#requestedLoadSize()">requestedLoadSize</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a></pre>
      <p>Requested number of items to load.</p>
      <p>Note that this may be larger than available data.</p>
    </div>
    <h2>Public constructors</h2>
    <div><a name="LoadInitialParams(kotlin.Int, kotlin.Boolean)"></a><a name="LoadInitialParams-kotlin.Int-kotlin.Boolean-"></a>
      <h3 class="api-name" id="LoadInitialParams(kotlin.Int,kotlin.Boolean)">LoadInitialParams</h3>
      <pre class="api-signature no-pretty-print">&lt;Key&nbsp;:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>&gt; <a href="/reference/kotlin/androidx/paging/PageKeyedDataSource.LoadInitialParams.html#LoadInitialParams(kotlin.Int,kotlin.Boolean)">LoadInitialParams</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;requestedLoadSize:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;placeholdersEnabled:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a><br>)</pre>
      <div class="devsite-table-wrapper">
        <table class="responsive">
          <thead>
            <tr>
              <th colspan="2">Parameters</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td><code>&lt;Key&nbsp;:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>&gt;</code></td>
              <td width="100%">
                <p>Type of data used to query pages.</p>
              </td>
            </tr>
          </tbody>
        </table>
      </div>
    </div>
  </body>
</html>
