# PageKeyedDataSource.LoadInitialCallback

Artifact: [androidx.paging:paging-common](https://developer.android.com/jetpack/androidx/releases/paging) [View Source](https://cs.android.com/search?q=file:androidx/paging/PageKeyedDataSource.jvmAndAndroid.kt+class:androidx.paging.PageKeyedDataSource.LoadInitialCallback) Added in [2.0.0](https://developer.android.com/jetpack/androidx/releases/paging#2.0.0) Deprecated in [3.0.0](https://developer.android.com/jetpack/androidx/releases/paging#3.0.0)

*** ** * ** ***


```
public abstract class PageKeyedDataSource.LoadInitialCallback<Key extends Object, Value extends Object>
```

<br />

*** ** * ** ***

> [!CAUTION]
> **This class is deprecated.**   
> PageKeyedDataSource is deprecated and has been replaced by PagingSource, use this instead:
>
> ```
> PagingSource<Key, Value>
> ```

Callback for `https://developer.android.com/reference/androidx/paging/PageKeyedDataSource#loadInitial(androidx.paging.PageKeyedDataSource.LoadInitialParams)` to return data and, optionally, position/count information.

A callback can be called only once, and will throw if called again.

If you can compute the number of items in the data set before and after the loaded range, call the five parameter `https://developer.android.com/reference/androidx/paging/PageKeyedDataSource.LoadInitialCallback#onResult(kotlin.collections.List,kotlin.Int,kotlin.Int,kotlin.Any,kotlin.Any)` to pass that information. You can skip passing this information by calling the three parameter `https://developer.android.com/reference/androidx/paging/PageKeyedDataSource.LoadInitialCallback#onResult(kotlin.collections.List,kotlin.Int,kotlin.Int,kotlin.Any,kotlin.Any)`, either if it's difficult to compute, or if `https://developer.android.com/reference/androidx/paging/PageKeyedDataSource.LoadInitialParams#placeholdersEnabled()` is `false`, so the positioning information will be ignored.

It is always valid for a DataSource loading method that takes a callback to stash the callback and call it later. This enables DataSources to be fully asynchronous, and to handle temporary, recoverable error states (such as a network error that can be retried).

| Parameters |
|---|---|
| `<Key extends https://developer.android.com/reference/java/lang/Object.html>` | Type of data used to query pages. |
| `<Value extends https://developer.android.com/reference/java/lang/Object.html>` | Type of items being loaded. |

## Summary

| ### Public constructors |
|---|
| `<Key extends https://developer.android.com/reference/java/lang/Object.html, Value extends https://developer.android.com/reference/java/lang/Object.html> [LoadInitialCallback](https://developer.android.com/reference/androidx/paging/PageKeyedDataSource.LoadInitialCallback#LoadInitialCallback())()` **This method is deprecated.** PageKeyedDataSource is deprecated and has been replaced by PagingSource |

| ### Public methods |
|---|---|
| `abstract void` | `[onResult](https://developer.android.com/reference/androidx/paging/PageKeyedDataSource.LoadInitialCallback#onResult(kotlin.collections.List,kotlin.Any,kotlin.Any))( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/List.html<@https://developer.android.com/reference/androidx/annotation/NonNull Value> data, Key previousPageKey, Key nextPageKey )` **This method is deprecated.** PageKeyedDataSource is deprecated and has been replaced by PagingSource |
| `abstract void` | `[onResult](https://developer.android.com/reference/androidx/paging/PageKeyedDataSource.LoadInitialCallback#onResult(kotlin.collections.List,kotlin.Int,kotlin.Int,kotlin.Any,kotlin.Any))( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/List.html<@https://developer.android.com/reference/androidx/annotation/NonNull Value> data, int position, int totalCount, Key previousPageKey, Key nextPageKey )` **This method is deprecated.** PageKeyedDataSource is deprecated and has been replaced by PagingSource |

## Public constructors

### LoadInitialCallback

```
public <Key extends Object, Value extends Object> [LoadInitialCallback](https://developer.android.com/reference/androidx/paging/PageKeyedDataSource.LoadInitialCallback#LoadInitialCallback())()
```

> [!CAUTION]
> **This method is deprecated.**   
> PageKeyedDataSource is deprecated and has been replaced by PagingSource, use this instead:
>
> ```
> PagingSource<Key, Value>
> ```

| Parameters |
|---|---|
| `<Key extends https://developer.android.com/reference/java/lang/Object.html>` | Type of data used to query pages. |
| `<Value extends https://developer.android.com/reference/java/lang/Object.html>` | Type of items being loaded. |

## Public methods

### onResult

Added in [2.0.0](https://developer.android.com/jetpack/androidx/releases/paging#2.0.0)

```
public abstract void [onResult](https://developer.android.com/reference/androidx/paging/PageKeyedDataSource.LoadInitialCallback#onResult(kotlin.collections.List,kotlin.Any,kotlin.Any))(
    @NonNull List<@NonNull Value> data,
    Key previousPageKey,
    Key nextPageKey
)
```

> [!CAUTION]
> **This method is deprecated.**   
> PageKeyedDataSource is deprecated and has been replaced by PagingSource, use this instead:
>
> ```
> PagingSource<Key, Value>
> ```

Called to pass loaded data from a DataSource.

Call this from `https://developer.android.com/reference/androidx/paging/PageKeyedDataSource#loadInitial(androidx.paging.PageKeyedDataSource.LoadInitialParams)` to initialize without counting available data, or supporting placeholders.

It is always valid to pass a different amount of data than what is requested. Pass an empty list if there is no more data to load.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/List.html<@https://developer.android.com/reference/androidx/annotation/NonNull Value> data` | List of items loaded from the `https://developer.android.com/reference/androidx/paging/PageKeyedDataSource`. |
| `Key previousPageKey` | Key for page before the initial load result, or `null` if no more data can be loaded before. |
| `Key nextPageKey` | Key for page after the initial load result, or `null` if no more data can be loaded after. |

### onResult

Added in [2.0.0](https://developer.android.com/jetpack/androidx/releases/paging#2.0.0)

```
public abstract void [onResult](https://developer.android.com/reference/androidx/paging/PageKeyedDataSource.LoadInitialCallback#onResult(kotlin.collections.List,kotlin.Int,kotlin.Int,kotlin.Any,kotlin.Any))(
    @NonNull List<@NonNull Value> data,
    int position,
    int totalCount,
    Key previousPageKey,
    Key nextPageKey
)
```

> [!CAUTION]
> **This method is deprecated.**   
> PageKeyedDataSource is deprecated and has been replaced by PagingSource, use this instead:
>
> ```
> PagingSource<Key, Value>
> ```

Called to pass initial load state from a DataSource.

Call this method from your DataSource's `loadInitial` function to return data, and inform how many placeholders should be shown before and after. If counting is cheap to compute (for example, if a network load returns the information regardless), it's recommended to pass data back through this method.

It is always valid to pass a different amount of data than what is requested. Pass an empty list if there is no more data to load.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/List.html<@https://developer.android.com/reference/androidx/annotation/NonNull Value> data` | List of items loaded from the `https://developer.android.com/reference/androidx/paging/DataSource`. If this is empty, the `https://developer.android.com/reference/androidx/paging/DataSource` is treated as empty, and no further loads will occur. |
| `int position` | Position of the item at the front of the list. If there are `N` items before the items in data that can be loaded from this DataSource, pass `N`. |
| `int totalCount` | Total number of items that may be returned from this DataSource. Includes the number in the initial `data` parameter as well as any items that can be loaded in front or behind of `data`. |
| `Key previousPageKey` | Key for page before the initial load result, or `null` if no more data can be loaded before. |
| `Key nextPageKey` | Key for page after the initial load result, or `null` if no more data can be loaded after. |