T - The type of the datasource / items. Internally we will use List<T> but you only have
to provide T (and not List<T>). Its safe to use this with
AbsListItemAdapterDelegate.public class AsyncListDifferDelegationAdapter<T>
extends androidx.recyclerview.widget.RecyclerView.Adapter
AdapterDelegatesManager pretty same as
AbsDelegationAdapter but also uses AsyncListDiffer from support library 27.0.1 for
calculating diffs between old and new collections of items and does this on background thread.
That means that now you should not carry about RecyclerView.Adapter#notifyItemChanged(int)
and other methods of adapter, all you need to do is to submit a new list into adapter and all diffs will be
calculated for you.
You just have to add the AdapterDelegates i.e. in the constructor of a subclass that inheritance from this
class:
class MyAdapter extends AsyncListDifferDelegationAdapter<MyDataSourceType> {
public MyAdapter() {
this.delegatesManager.add(new FooAdapterDelegate())
.add(new BarAdapterDelegate());
}
}
| Modifier and Type | Field and Description |
|---|---|
protected AdapterDelegatesManager<java.util.List<T>> |
delegatesManager |
protected androidx.recyclerview.widget.AsyncListDiffer<T> |
differ |
| Constructor and Description |
|---|
AsyncListDifferDelegationAdapter(androidx.recyclerview.widget.AsyncDifferConfig differConfig,
AdapterDelegatesManager<java.util.List<T>> delegatesManager) |
AsyncListDifferDelegationAdapter(androidx.recyclerview.widget.DiffUtil.ItemCallback<T> diffCallback) |
AsyncListDifferDelegationAdapter(androidx.recyclerview.widget.DiffUtil.ItemCallback<T> diffCallback,
AdapterDelegatesManager<java.util.List<T>> delegatesManager) |
| Modifier and Type | Method and Description |
|---|---|
int |
getItemCount() |
java.util.List<T> |
getItems()
Get the items / data source of this adapter
|
int |
getItemViewType(int position) |
void |
onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder holder,
int position) |
void |
onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder holder,
int position,
java.util.List payloads) |
androidx.recyclerview.widget.RecyclerView.ViewHolder |
onCreateViewHolder(android.view.ViewGroup parent,
int viewType) |
boolean |
onFailedToRecycleView(androidx.recyclerview.widget.RecyclerView.ViewHolder holder) |
void |
onViewAttachedToWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder holder) |
void |
onViewDetachedFromWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder holder) |
void |
onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder holder) |
void |
setItems(java.util.List<T> items)
Set the items / data source of this adapter
|
bindViewHolder, createViewHolder, getItemId, hasObservers, hasStableIds, notifyDataSetChanged, notifyItemChanged, notifyItemChanged, notifyItemInserted, notifyItemMoved, notifyItemRangeChanged, notifyItemRangeChanged, notifyItemRangeInserted, notifyItemRangeRemoved, notifyItemRemoved, onAttachedToRecyclerView, onDetachedFromRecyclerView, registerAdapterDataObserver, setHasStableIds, unregisterAdapterDataObserverprotected final AdapterDelegatesManager<java.util.List<T>> delegatesManager
protected final androidx.recyclerview.widget.AsyncListDiffer<T> differ
public AsyncListDifferDelegationAdapter(@NonNull
androidx.recyclerview.widget.DiffUtil.ItemCallback<T> diffCallback)
public AsyncListDifferDelegationAdapter(@NonNull
androidx.recyclerview.widget.DiffUtil.ItemCallback<T> diffCallback,
@NonNull
AdapterDelegatesManager<java.util.List<T>> delegatesManager)
public AsyncListDifferDelegationAdapter(@NonNull
androidx.recyclerview.widget.AsyncDifferConfig differConfig,
@NonNull
AdapterDelegatesManager<java.util.List<T>> delegatesManager)
@NonNull
public androidx.recyclerview.widget.RecyclerView.ViewHolder onCreateViewHolder(@NonNull
android.view.ViewGroup parent,
int viewType)
onCreateViewHolder in class androidx.recyclerview.widget.RecyclerView.Adapterpublic void onBindViewHolder(@NonNull
androidx.recyclerview.widget.RecyclerView.ViewHolder holder,
int position)
onBindViewHolder in class androidx.recyclerview.widget.RecyclerView.Adapterpublic void onBindViewHolder(@NonNull
androidx.recyclerview.widget.RecyclerView.ViewHolder holder,
int position,
@NonNull
java.util.List payloads)
onBindViewHolder in class androidx.recyclerview.widget.RecyclerView.Adapterpublic int getItemViewType(int position)
getItemViewType in class androidx.recyclerview.widget.RecyclerView.Adapterpublic void onViewRecycled(@NonNull
androidx.recyclerview.widget.RecyclerView.ViewHolder holder)
onViewRecycled in class androidx.recyclerview.widget.RecyclerView.Adapterpublic boolean onFailedToRecycleView(@NonNull
androidx.recyclerview.widget.RecyclerView.ViewHolder holder)
onFailedToRecycleView in class androidx.recyclerview.widget.RecyclerView.Adapterpublic void onViewAttachedToWindow(@NonNull
androidx.recyclerview.widget.RecyclerView.ViewHolder holder)
onViewAttachedToWindow in class androidx.recyclerview.widget.RecyclerView.Adapterpublic void onViewDetachedFromWindow(@NonNull
androidx.recyclerview.widget.RecyclerView.ViewHolder holder)
onViewDetachedFromWindow in class androidx.recyclerview.widget.RecyclerView.Adapterpublic java.util.List<T> getItems()
public void setItems(java.util.List<T> items)
items - The items / data sourcepublic int getItemCount()
getItemCount in class androidx.recyclerview.widget.RecyclerView.Adapter