Skip to content

Commit

Permalink
Fix crash and other bugs in HeaderStore.onItemRangeChanged()
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelRocks committed Feb 20, 2015
1 parent ca437bc commit 6c49ba7
Showing 1 changed file with 7 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -205,26 +205,15 @@ else if(fromPosition > toPosition) {
public void onItemRangeChanged(int startPosition, int itemCount) {
headersViewByHeadersIds.clear();

if (startPosition + itemCount >= isHeaderByItemPosition.size()) {
for (int i = startPosition; i < startPosition + itemCount; i++) {
if(i >= isHeaderByItemPosition.size()) {
isHeaderByItemPosition.add(null);
}
}
if (startPosition >= isHeaderByItemPosition.size()) {
return;
}

for(int i = 0; i < itemCount; i ++) {
isHeaderByItemPosition.set(i + startPosition, null);
}

long startPositionId = adapter.getHeaderId(startPosition);
if(startPosition > 0) {
long beforeStartPositionId = adapter.getHeaderId(startPosition - 1);
isHeaderByItemPosition.set(startPosition, startPositionId != beforeStartPositionId);
}
if(startPosition + itemCount < isHeaderByItemPosition.size()) {
long afterStartPositionId = adapter.getHeaderId(startPosition + itemCount);
isHeaderByItemPosition.set(startPosition + itemCount, startPositionId != afterStartPositionId);
final int start = Math.min(startPosition, isHeaderByItemPosition.size());
// We need to invalidate one additional item after the changed range.
final int end = Math.min(startPosition + itemCount + 1, isHeaderByItemPosition.size());
for (int i = start; i < end; ++i) {
isHeaderByItemPosition.set(i, null);
}
}

Expand Down

0 comments on commit 6c49ba7

Please sign in to comment.