# AsyncPagedListDiffer

Artifact: [androidx.paging:paging-runtime](https://developer.android.com/jetpack/androidx/releases/paging) [View Source](https://cs.android.com/search?q=file:androidx/paging/AsyncPagedListDiffer.kt+class:androidx.paging.AsyncPagedListDiffer) 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 class AsyncPagedListDiffer<T extends Object>
```

<br />

*** ** * ** ***

> [!CAUTION]
> **This class is deprecated.**   
> AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer, use this instead:
>
> ```
> AsyncPagingDataDiffer<T>
> ```

Helper object for mapping a `https://developer.android.com/reference/androidx/paging/PagedList` into a `https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.Adapter`.

For simplicity, the `https://developer.android.com/reference/androidx/paging/PagedListAdapter` wrapper class can often be used instead of the differ directly. This diff class is exposed for complex cases, and where overriding an adapter base class to support paging isn't convenient.

When consuming a `https://developer.android.com/reference/androidx/lifecycle/LiveData` of PagedList, you can observe updates and dispatch them directly to `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#submitList(androidx.paging.PagedList)`. The AsyncPagedListDiffer then can present this updating data set simply for an adapter. It listens to PagedList loading callbacks, and uses DiffUtil on a background thread to compute updates as new PagedLists are received.

It provides a simple list-like API with `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#getItem(kotlin.Int)` and `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#itemCount()` for an adapter to acquire and present data objects.

A complete usage pattern with Room would look like this:

```
@Dao
interface UserDao {
    @Query("SELECT * FROM user ORDER BY lastName ASC")
    public abstract DataSource.Factory<Integer, User> usersByLastName();
}

class MyViewModel extends ViewModel {
    public final LiveData<PagedList<User>> usersList;
    public MyViewModel(UserDao userDao) {
        usersList = new LivePagedListBuilder<>(
        userDao.usersByLastName(), /* page size */20).build();
    }
}

class MyActivity extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedState) {
        super.onCreate(savedState);
        MyViewModel viewModel = new ViewModelProvider(this).get(MyViewModel.class);
        RecyclerView recyclerView = findViewById(R.id.user_list);
        final UserAdapter adapter = new UserAdapter();
        viewModel.usersList.observe(this, pagedList -> adapter.submitList(pagedList));
        recyclerView.setAdapter(adapter);
    }
}

class UserAdapter extends RecyclerView.Adapter&lt;UserViewHolder> {
    private final AsyncPagedListDiffer&lt;User> differ =
            new AsyncPagedListDiffer(this, DIFF_CALLBACK);
    @Override
    public int getItemCount() {
        return differ.getItemCount();
    }
    public void submitList(PagedList&lt;User> pagedList) {
        differ.submitList(pagedList);
    }
    @Override
    public void onBindViewHolder(UserViewHolder holder, int position) {
        User user = differ.getItem(position);
        if (user != null) {
            holder.bindTo(user);
        } else {
            // Null defines a placeholder item - AsyncPagedListDiffer will automatically
            // invalidate this row when the actual object is loaded from the database
            holder.clear();
        }
    }
    public static final DiffUtil.ItemCallback&lt;User> DIFF_CALLBACK =
            new DiffUtil.ItemCallback&lt;User>() {
        @Override
        public boolean areItemsTheSame(
            @NonNull User oldUser, @NonNull User newUser) {
            // User properties may have changed if reloaded from the DB, but ID is fixed
            return oldUser.getId() == newUser.getId();
        }
        @Override
        public boolean areContentsTheSame(@NonNull User oldUser, @NonNull User newUser) {
            // NOTE: if you use equals, your object must properly override Object#equals()
            // Incorrectly returning false here will result in too many animations.
            return oldUser.equals(newUser);
        }
    }
}
```

| Parameters |
|---|---|
| `<T extends https://developer.android.com/reference/java/lang/Object.html>` | Type of the PagedLists this differ will receive. |

## Summary

| ### Nested types |
|---|
| `public interface https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer.PagedListListener<T extends https://developer.android.com/reference/java/lang/Object.html>` **This interface is deprecated.** PagedList is deprecated and has been replaced by PagingData |

| ### Public constructors |
|---|
| `<T extends https://developer.android.com/reference/java/lang/Object.html> [AsyncPagedListDiffer](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#AsyncPagedListDiffer(androidx.recyclerview.widget.RecyclerView.Adapter,androidx.recyclerview.widget.DiffUtil.ItemCallback))( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.Adapter<@https://developer.android.com/reference/androidx/annotation/NonNull ?> adapter, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/recyclerview/widget/DiffUtil.ItemCallback<@https://developer.android.com/reference/androidx/annotation/NonNull T> diffCallback )` **This method is deprecated.** PagedList is deprecated and has been replaced by PagingData |
| `<T extends https://developer.android.com/reference/java/lang/Object.html> [AsyncPagedListDiffer](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#AsyncPagedListDiffer(androidx.recyclerview.widget.ListUpdateCallback,androidx.recyclerview.widget.AsyncDifferConfig))( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/recyclerview/widget/ListUpdateCallback listUpdateCallback, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/recyclerview/widget/AsyncDifferConfig<@https://developer.android.com/reference/androidx/annotation/NonNull T> config )` **This method is deprecated.** PagedList is deprecated and has been replaced by PagingData |

| ### Public methods |
|---|---|
| `void` | `[addLoadStateListener](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#addLoadStateListener(kotlin.Function2))( @https://developer.android.com/reference/androidx/annotation/NonNull Function2<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/paging/LoadType, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/paging/LoadState, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html> listener )` **This method is deprecated.** AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer |
| `final void` | `[addPagedListListener](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#addPagedListListener(kotlin.Function2))( @https://developer.android.com/reference/androidx/annotation/NonNull Function2<https://developer.android.com/reference/androidx/paging/PagedList<@https://developer.android.com/reference/androidx/annotation/NonNull T>, https://developer.android.com/reference/androidx/paging/PagedList<@https://developer.android.com/reference/androidx/annotation/NonNull T>, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html> callback )` **This method is deprecated.** AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer |
| `void` | `[addPagedListListener](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#addPagedListListener(androidx.paging.AsyncPagedListDiffer.PagedListListener))( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer.PagedListListener<@https://developer.android.com/reference/androidx/annotation/NonNull T> listener )` **This method is deprecated.** AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer |
| `https://developer.android.com/reference/androidx/paging/PagedList<@https://developer.android.com/reference/androidx/annotation/NonNull T>` | `[getCurrentList](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#getCurrentList())()` **This method is deprecated.** AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer |
| `T` | `[getItem](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#getItem(kotlin.Int))(int index)` **This method is deprecated.** AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer |
| `int` | `[getItemCount](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#getItemCount())()` **This method is deprecated.** AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer |
| `void` | `[removeLoadStateListener](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#removeLoadStateListener(kotlin.Function2))( @https://developer.android.com/reference/androidx/annotation/NonNull Function2<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/paging/LoadType, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/paging/LoadState, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html> listener )` **This method is deprecated.** AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer |
| `final void` | `[removePagedListListener](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#removePagedListListener(kotlin.Function2))( @https://developer.android.com/reference/androidx/annotation/NonNull Function2<https://developer.android.com/reference/androidx/paging/PagedList<@https://developer.android.com/reference/androidx/annotation/NonNull T>, https://developer.android.com/reference/androidx/paging/PagedList<@https://developer.android.com/reference/androidx/annotation/NonNull T>, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html> callback )` **This method is deprecated.** AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer |
| `void` | `[removePagedListListener](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#removePagedListListener(androidx.paging.AsyncPagedListDiffer.PagedListListener))( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer.PagedListListener<@https://developer.android.com/reference/androidx/annotation/NonNull T> listener )` **This method is deprecated.** AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer |
| `void` | `[submitList](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#submitList(androidx.paging.PagedList))(https://developer.android.com/reference/androidx/paging/PagedList<@https://developer.android.com/reference/androidx/annotation/NonNull T> pagedList)` **This method is deprecated.** AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer |
| `void` | `[submitList](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#submitList(androidx.paging.PagedList,java.lang.Runnable))(https://developer.android.com/reference/androidx/paging/PagedList<@https://developer.android.com/reference/androidx/annotation/NonNull T> pagedList, https://developer.android.com/reference/java/lang/Runnable.html commitCallback)` **This method is deprecated.** AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer |

## Public constructors

### AsyncPagedListDiffer

```
public <T extends Object> [AsyncPagedListDiffer](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#AsyncPagedListDiffer(androidx.recyclerview.widget.RecyclerView.Adapter,androidx.recyclerview.widget.DiffUtil.ItemCallback))(
    @NonNull RecyclerView.Adapter<@NonNull ?> adapter,
    @NonNull DiffUtil.ItemCallback<@NonNull T> diffCallback
)
```

> [!CAUTION]
> **This method is deprecated.**   
> PagedList is deprecated and has been replaced by PagingData, use this instead:
>
> ```
> AsyncPagingDataDiffer(
>                 Dispatchers.Main,
>                 Dispatchers.IO,
>                 diffCallback,
>                 listUpdateCallback
>             )
> ```

Convenience for

```
AsyncPagedListDiffer(
    AdapterListUpdateCallback(adapter),
    AsyncDifferConfig.Builder<T>(diffCallback).build()
)
```

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.Adapter<@https://developer.android.com/reference/androidx/annotation/NonNull ?> adapter` | Adapter that will receive update signals. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/recyclerview/widget/DiffUtil.ItemCallback<@https://developer.android.com/reference/androidx/annotation/NonNull T> diffCallback` | The `https://developer.android.com/reference/androidx/recyclerview/widget/DiffUtil.ItemCallback` instance to compare items in the list. |

### AsyncPagedListDiffer

```
public <T extends Object> [AsyncPagedListDiffer](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#AsyncPagedListDiffer(androidx.recyclerview.widget.ListUpdateCallback,androidx.recyclerview.widget.AsyncDifferConfig))(
    @NonNull ListUpdateCallback listUpdateCallback,
    @NonNull AsyncDifferConfig<@NonNull T> config
)
```

> [!CAUTION]
> **This method is deprecated.**   
> PagedList is deprecated and has been replaced by PagingData, use this instead:
>
> ```
> AsyncPagingDataDiffer(
>                 Dispatchers.Main,
>                 Dispatchers.IO,
>                 config.diffCallback,
>                 listUpdateCallback
>             )
> ```

## Public methods

### addLoadStateListener

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

```
public void [addLoadStateListener](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#addLoadStateListener(kotlin.Function2))(
    @NonNull Function2<@NonNull LoadType, @NonNull LoadState, Unit> listener
)
```

> [!CAUTION]
> **This method is deprecated.**   
> AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer, use this instead:
>
> ```
> AsyncPagingDataDiffer<T>
> ```

Add a `https://developer.android.com/reference/androidx/paging/LoadState` listener to observe the loading state of the current `https://developer.android.com/reference/androidx/paging/PagedList`.

As new PagedLists are submitted and displayed, the listener will be notified to reflect current `https://developer.android.com/reference/androidx/paging/LoadType#REFRESH`, `https://developer.android.com/reference/androidx/paging/LoadType#PREPEND`, and `https://developer.android.com/reference/androidx/paging/LoadType#APPEND` states.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull Function2<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/paging/LoadType, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/paging/LoadState, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html> listener` | `https://developer.android.com/reference/androidx/paging/LoadState` listener to receive updates. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#removeLoadStateListener(kotlin.Function2)` |   |

### addPagedListListener

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

```
public final void [addPagedListListener](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#addPagedListListener(kotlin.Function2))(
    @NonNull Function2<PagedList<@NonNull T>, PagedList<@NonNull T>, Unit> callback
)
```

> [!CAUTION]
> **This method is deprecated.**   
> AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer, use this instead:
>
> ```
> AsyncPagingDataDiffer<T>
> ```

Add a callback to receive updates when the current `https://developer.android.com/reference/androidx/paging/PagedList` changes.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull Function2<https://developer.android.com/reference/androidx/paging/PagedList<@https://developer.android.com/reference/androidx/annotation/NonNull T>, https://developer.android.com/reference/androidx/paging/PagedList<@https://developer.android.com/reference/androidx/annotation/NonNull T>, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html> callback` | to receive updates. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#currentList()` |   |
| `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#removePagedListListener(androidx.paging.AsyncPagedListDiffer.PagedListListener)` |   |

### addPagedListListener

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

```
public void [addPagedListListener](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#addPagedListListener(androidx.paging.AsyncPagedListDiffer.PagedListListener))(
    @NonNull AsyncPagedListDiffer.PagedListListener<@NonNull T> listener
)
```

> [!CAUTION]
> **This method is deprecated.**   
> AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer, use this instead:
>
> ```
> AsyncPagingDataDiffer<T>
> ```

Add a `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer.PagedListListener` to receive updates when the current `https://developer.android.com/reference/androidx/paging/PagedList` changes.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer.PagedListListener<@https://developer.android.com/reference/androidx/annotation/NonNull T> listener` | Listener to receive updates. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#currentList()` |   |
| `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#removePagedListListener(androidx.paging.AsyncPagedListDiffer.PagedListListener)` |   |

### getCurrentList

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 PagedList<@NonNull T> [getCurrentList](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#getCurrentList())()
```

> [!CAUTION]
> **This method is deprecated.**   
> AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer, use this instead:
>
> ```
> AsyncPagingDataDiffer<T>
> ```

Returns the PagedList currently being displayed by the differ.

This is not necessarily the most recent list passed to `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#submitList(androidx.paging.PagedList)`, because a diff is computed asynchronously between the new list and the current list before updating the currentList value. May be `null` if no `https://developer.android.com/reference/androidx/paging/PagedList` is being presented.

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/paging/PagedList<@https://developer.android.com/reference/androidx/annotation/NonNull T>` | The list currently being displayed, may be `null`. |

### getItem

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 T [getItem](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#getItem(kotlin.Int))(int index)
```

> [!CAUTION]
> **This method is deprecated.**   
> AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer, use this instead:
>
> ```
> AsyncPagingDataDiffer<T>
> ```

Get the item from the current PagedList at the specified index.

Note that this operates on both loaded items and null padding within the PagedList.

| Parameters |
|---|---|
| `int index` | Index of item to get, must be \>= 0, and \<`getItemCount`. |

| Returns |
|---|---|
| `T` | The item, or null, if a null placeholder is at the specified position. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-index-out-of-bounds-exception/index.html` | if `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#itemCount()` is 0. |

### getItemCount

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 int [getItemCount](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#getItemCount())()
```

> [!CAUTION]
> **This method is deprecated.**   
> AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer, use this instead:
>
> ```
> AsyncPagingDataDiffer<T>
> ```

Get the number of items currently presented by this Differ. This value can be directly returned to `https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.Adapter#getItemCount()`.

| Returns |
|---|---|
| `int` | Number of items being presented. |

### removeLoadStateListener

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

```
public void [removeLoadStateListener](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#removeLoadStateListener(kotlin.Function2))(
    @NonNull Function2<@NonNull LoadType, @NonNull LoadState, Unit> listener
)
```

> [!CAUTION]
> **This method is deprecated.**   
> AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer, use this instead:
>
> ```
> AsyncPagingDataDiffer<T>
> ```

Remove a previously registered `https://developer.android.com/reference/androidx/paging/LoadState` listener.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull Function2<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/paging/LoadType, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/paging/LoadState, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html> listener` | Previously registered listener. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#currentList()` |   |
| `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#addPagedListListener(androidx.paging.AsyncPagedListDiffer.PagedListListener)` |   |

### removePagedListListener

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

```
public final void [removePagedListListener](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#removePagedListListener(kotlin.Function2))(
    @NonNull Function2<PagedList<@NonNull T>, PagedList<@NonNull T>, Unit> callback
)
```

> [!CAUTION]
> **This method is deprecated.**   
> AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer, use this instead:
>
> ```
> AsyncPagingDataDiffer<T>
> ```

Remove a previously registered callback via `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#addPagedListListener(androidx.paging.AsyncPagedListDiffer.PagedListListener)`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull Function2<https://developer.android.com/reference/androidx/paging/PagedList<@https://developer.android.com/reference/androidx/annotation/NonNull T>, https://developer.android.com/reference/androidx/paging/PagedList<@https://developer.android.com/reference/androidx/annotation/NonNull T>, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html> callback` | Previously registered callback. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#currentList()` |   |
| `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#addPagedListListener(androidx.paging.AsyncPagedListDiffer.PagedListListener)` |   |

### removePagedListListener

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

```
public void [removePagedListListener](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#removePagedListListener(androidx.paging.AsyncPagedListDiffer.PagedListListener))(
    @NonNull AsyncPagedListDiffer.PagedListListener<@NonNull T> listener
)
```

> [!CAUTION]
> **This method is deprecated.**   
> AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer, use this instead:
>
> ```
> AsyncPagingDataDiffer<T>
> ```

Remove a previously registered `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer.PagedListListener`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer.PagedListListener<@https://developer.android.com/reference/androidx/annotation/NonNull T> listener` | Previously registered listener. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#currentList()` |   |
| `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#addPagedListListener(androidx.paging.AsyncPagedListDiffer.PagedListListener)` |   |

### submitList

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 void [submitList](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#submitList(androidx.paging.PagedList))(PagedList<@NonNull T> pagedList)
```

> [!CAUTION]
> **This method is deprecated.**   
> AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer, use this instead:
>
> ```
> AsyncPagingDataDiffer<T>
> ```

Pass a new `https://developer.android.com/reference/androidx/paging/PagedList` to the differ.

If a PagedList is already present, a diff will be computed asynchronously on a background thread. When the diff is computed, it will be applied (dispatched to the `https://developer.android.com/reference/androidx/recyclerview/widget/ListUpdateCallback`), and the new PagedList will be swapped in as the `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#currentList()`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/paging/PagedList<@https://developer.android.com/reference/androidx/annotation/NonNull T> pagedList` | The new PagedList. |

### submitList

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

```
public void [submitList](https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#submitList(androidx.paging.PagedList,java.lang.Runnable))(PagedList<@NonNull T> pagedList, Runnable commitCallback)
```

> [!CAUTION]
> **This method is deprecated.**   
> AsyncPagedListDiffer is deprecated and has been replaced by AsyncPagingDataDiffer, use this instead:
>
> ```
> AsyncPagingDataDiffer<T>
> ```

Pass a new PagedList to the differ.

If a PagedList is already present, a diff will be computed asynchronously on a background thread. When the diff is computed, it will be applied (dispatched to the `https://developer.android.com/reference/androidx/recyclerview/widget/ListUpdateCallback`), and the new PagedList will be swapped in as the `https://developer.android.com/reference/androidx/paging/AsyncPagedListDiffer#currentList()`.

The commit callback can be used to know when the PagedList is committed, but note that it may not be executed. If PagedList B is submitted immediately after PagedList A, and is committed directly, the callback associated with PagedList A will not be run.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/paging/PagedList<@https://developer.android.com/reference/androidx/annotation/NonNull T> pagedList` | The new `https://developer.android.com/reference/androidx/paging/PagedList`. |
| `https://developer.android.com/reference/java/lang/Runnable.html commitCallback` | Optional runnable that is executed when the PagedList is committed, if it is committed. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if previous PagedList wasn't snapshotted correctly. |