StickyHeaders
StickyHeaders copied to clipboard
IndexOutOfBoundsException: onBindItemViewHolder
I found one issue
@Override
public void onBindItemViewHolder(ItemViewHolder viewHolder, int sectionIndex, int itemIndex, int itemType) {
int sectionPosition = includeHeader ? sectionIndex - 1 : sectionIndex;
switch (itemType) {
case ITEM_HEADER:
...
break;
case ITEM_TILE:
initTile((FeedViewHolder) viewHolder, feedDataProviders.get(sectionPosition).getTileViewModelList().get(itemIndex), sectionPosition);
break;
case ITEM_FOOTER:
...
break;
default:
break;
}
}
Where feedDataProviders
is List<FeedDataProvider>
. FeedDataProvider
has list of custom objects TileViewModel
.
I got IndexOutOfBoundsException: Invalid index 0, size is 0
in line initTile()
because getTileViewModelList()
return empty list and itemIndex
is 0. I think if getNumberOfItemsInSection
return 0 then is should not called the onBindItemViewHolder
right?
@Override
public int getNumberOfItemsInSection(int sectionIndex) {
if((includeHeader && sectionIndex == 0) || (includeFooter && sectionIndex == getNumberOfSections() - 1)) {
return 1;
}
return feedDataProviders.get(includeHeader ? sectionIndex - 1 : sectionIndex).getTileViewModelList().size();
}
Good point. I'll look into fixing this. Thanks!