AsyncListDiffer

Helper for computing the difference between two lists via DiffUtil on a background
thread.

It can be connected to a
RecyclerView.Adapter, and will signal the
adapter of changes between sumbitted lists.

For simplicity, the ListAdapter wrapper class can often be used instead of the
AsyncListDiffer directly. This AsyncListDiffer can be used for complex cases, where overriding an
adapter base class to support asynchronous List diffing isn't convenient.

The AsyncListDiffer can consume the values from a LiveData of List and present the
data simply for an adapter. It computes differences in list contents via DiffUtil on a
background thread as new Lists are received.

Use getCurrentList() to access the current List, and present its data objects. Diff
results will be dispatched to the ListUpdateCallback immediately before the current list is
updated. If you're dispatching list updates directly to an Adapter, this means the Adapter can
safely access list items and total size via getCurrentList().

submitList

Pass a new List to the AdapterHelper. Adapter updates will be computed on a background
thread.

If a List 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 ListUpdateCallback),
and the new List will be swapped in.