com.bumptech.glide
Class ListPreloader<T>

java.lang.Object
  extended by com.bumptech.glide.ListPreloader<T>
Type Parameters:
T - The type of the model being displayed in the list.
All Implemented Interfaces:
AbsListView.OnScrollListener

public abstract class ListPreloader<T>
extends Object
implements AbsListView.OnScrollListener

Loads a few resources ahead in the direction of scrolling in any AbsListView so that images are in the memory cache just before the corresponding view in created in the list. Gives the appearance of an infinitely large image cache, depending on scrolling speed, cpu speed, and cache size.

Must be set using AbsListView.setOnScrollListener(android.widget.AbsListView.OnScrollListener), or have its corresponding methods called from another AbsListView.OnScrollListener to function.


Field Summary
 
Fields inherited from interface android.widget.AbsListView.OnScrollListener
SCROLL_STATE_FLING, SCROLL_STATE_IDLE, SCROLL_STATE_TOUCH_SCROLL
 
Constructor Summary
ListPreloader(int maxPreload)
          Constructor for the preloader.
 
Method Summary
protected abstract  int[] getDimensions(T item)
          Returns the dimensions of the view in the list where the resources will be displayed.
protected abstract  List<T> getItems(int start, int end)
          Returns a list of all models that need to be loaded for the list to display adapter items start - end.
protected abstract  GenericRequestBuilder getRequestBuilder(T item)
          Returns a glide request for a given item.
 void onScroll(AbsListView absListView, int firstVisible, int visibleCount, int totalCount)
           
 void onScrollStateChanged(AbsListView absListView, int scrollState)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ListPreloader

public ListPreloader(int maxPreload)
Constructor for the preloader.

Parameters:
maxPreload - The maximum number of items in the list to load ahead (corresponds to adapter positions).
Method Detail

onScrollStateChanged

public void onScrollStateChanged(AbsListView absListView,
                                 int scrollState)
Specified by:
onScrollStateChanged in interface AbsListView.OnScrollListener

onScroll

public void onScroll(AbsListView absListView,
                     int firstVisible,
                     int visibleCount,
                     int totalCount)
Specified by:
onScroll in interface AbsListView.OnScrollListener

getDimensions

protected abstract int[] getDimensions(T item)
Returns the dimensions of the view in the list where the resources will be displayed.

Note - The dimensions returned here must precisely match those of the view in the list.

Parameters:
item - A model
Returns:
The dimensions of the view where the item will be displayed

getItems

protected abstract List<T> getItems(int start,
                                    int end)
Returns a list of all models that need to be loaded for the list to display adapter items start - end. A list of any size can be returned so there can be multiple models per adapter position.

Parameters:
start - The smallest adapter position. Will be >= 0 && < adapter.getCount() && <= end
end - The largest adapter position. Will be >= 0 && < adapter.getCount && >= start
Returns:
A non null list of all models for adapter positions between start and end.

getRequestBuilder

protected abstract GenericRequestBuilder getRequestBuilder(T item)
Returns a glide request for a given item. Must exactly match the request used to load the resource in the list. The target and context will be provided by the preloader.

Parameters:
item - The model to load.
Returns:
A non null BitmapRequestBuilder.