belongs to Maven artifact com.android.support:recyclerview-v7:28.0.0-alpha1
AsyncListUtil
  public
  
  
  
  class
  AsyncListUtil
  
    extends Object
  
  
  
  
  
  
| java.lang.Object | |
| ↳ | android.support.v7.util.AsyncListUtil<T> | 
A utility class that supports asynchronous content loading.
It can be used to load Cursor data in chunks without querying the Cursor on the UI Thread while keeping UI and cache synchronous for better user experience.
It loads the data on a background thread and keeps only a limited number of fixed sized chunks in memory at all times.
 AsyncListUtil queries the currently visible range through AsyncListUtil.ViewCallback,
 loads the required data items in the background through AsyncListUtil.DataCallback, and notifies a
 AsyncListUtil.ViewCallback when the data is loaded. It may load some extra items for smoother
 scrolling.
 
Note that this class uses a single thread to load the data, so it suitable to load data from secondary storage such as disk, but not from network.
 This class is designed to work with RecyclerView, but it does
 not depend on it and can be used with other list views.
Summary
| Nested classes | |
|---|---|
| 
        
        
        
        
        class | AsyncListUtil.DataCallback<T>The callback that provides data access for  | 
| 
        
        
        
        
        class | AsyncListUtil.ViewCallbackThe callback that links  | 
| Public constructors | |
|---|---|
| 
      AsyncListUtil(Class<T> klass, int tileSize, DataCallback<T> dataCallback, AsyncListUtil.ViewCallback viewCallback)
      Creates an AsyncListUtil. | |
| Public methods | |
|---|---|
| 
        
        
        
        
        
        T | 
      getItem(int position)
      Returns the data item at the given position or  | 
| 
        
        
        
        
        
        int | 
      getItemCount()
      Returns the number of items in the data set. | 
| 
        
        
        
        
        
        void | 
      onRangeChanged()
      Updates the currently visible item range. | 
| 
        
        
        
        
        
        void | 
      refresh()
      Forces reloading the data. | 
| Inherited methods | |
|---|---|
|  From
class 
  
    java.lang.Object
  
 | |
Public constructors
AsyncListUtil
AsyncListUtil (Class<T> klass, 
                int tileSize, 
                DataCallback<T> dataCallback, 
                AsyncListUtil.ViewCallback viewCallback)Creates an AsyncListUtil.
| Parameters | |
|---|---|
| klass | Class: Class of the data item. | 
| tileSize | int: Number of item per chunk loaded at once. | 
| dataCallback | DataCallback: Data access callback. | 
| viewCallback | AsyncListUtil.ViewCallback: Callback for querying visible item range and update notifications. | 
Public methods
getItem
T getItem (int position)
Returns the data item at the given position or null if it has not been loaded
 yet.
 
 If this method has been called for a specific position and returned null, then
 onItemLoaded(int) will be called when it finally loads. Note that if
 this position stays outside of the cached item range (as defined by
 extendRangeInto(int[], int[], int) method), then the callback will never be called for
 this position.
| Parameters | |
|---|---|
| position | int: Item position. | 
| Returns | |
|---|---|
| T | The data item at the given position or nullif it has not been loaded
         yet. | 
getItemCount
int getItemCount ()
Returns the number of items in the data set.
 This is the number returned by a recent call to
 refreshData().
| Returns | |
|---|---|
| int | Number of items. | 
onRangeChanged
void onRangeChanged ()
Updates the currently visible item range.
 Identifies the data items that have not been loaded yet and initiates loading them in the
 background. Should be called from the view's scroll listener (such as
 onScrolled(RecyclerView, int, int)).
refresh
void refresh ()
Forces reloading the data.
Discards all the cached data and reloads all required data items for the currently visible range. To be called when the data item count and/or contents has changed.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-02-10 UTC.
