public abstract static class GridLayoutManager.SpanSizeLookup extends Object
Default implementation sets each item to occupy exactly 1 span.
Constructor and Description |
---|
SpanSizeLookup() |
Modifier and Type | Method and Description |
---|---|
int |
getSpanGroupIndex(int adapterPosition,
int spanCount)
Returns the index of the group this position belongs.
|
int |
getSpanIndex(int position,
int spanCount)
Returns the final span index of the provided position.
|
abstract int |
getSpanSize(int position)
Returns the number of span occupied by the item at
position . |
void |
invalidateSpanIndexCache()
Clears the span index cache.
|
boolean |
isSpanIndexCacheEnabled()
Returns whether results of
getSpanIndex(int, int) method are cached or not. |
void |
setSpanIndexCacheEnabled(boolean cacheSpanIndices)
Sets whether the results of
getSpanIndex(int, int) method should be cached or
not. |
public abstract int getSpanSize(int position)
position
.position
- The adapter position of the itempublic void setSpanIndexCacheEnabled(boolean cacheSpanIndices)
getSpanIndex(int, int)
method should be cached or
not. By default these values are not cached. If you are not overriding
getSpanIndex(int, int)
, you should set this to true for better performance.cacheSpanIndices
- Whether results of getSpanIndex should be cached or not.public void invalidateSpanIndexCache()
public boolean isSpanIndexCacheEnabled()
getSpanIndex(int, int)
method are cached or not.getSpanIndex(int, int)
are cached.public int getSpanIndex(int position, int spanCount)
If you have a faster way to calculate span index for your items, you should override
this method. Otherwise, you should enable span index cache
(setSpanIndexCacheEnabled(boolean)
) for better performance. When caching is
disabled, default implementation traverses all items from 0 to
position
. When caching is enabled, it calculates from the closest cached
value before the position
.
If you override this method, you need to make sure it is consistent with
getSpanSize(int)
. GridLayoutManager does not call this method for
each item. It is called only for the reference item and rest of the items
are assigned to spans based on the reference item. For example, you cannot assign a
position to span 2 while span 1 is empty.
Note that span offsets always start with 0 and are not affected by RTL.
position
- The position of the itemspanCount
- The total number of spans in the gridspanCount
(exclusive)public int getSpanGroupIndex(int adapterPosition, int spanCount)
For example, if grid has 3 columns and each item occupies 1 span, span group index for item 1 will be 0, item 5 will be 1.
adapterPosition
- The position in adapterspanCount
- The total number of spans in the grid