Fixed
Status Update
Comments
du...@google.com <du...@google.com>
ap...@google.com <ap...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 7ece31e73a3eabe7aabb81c7a2bc707d9f70a5ed
Author: Dustin Lam <dustinlam@google.com>
Date: Thu Jun 25 20:16:27 2020
Prevent drop events from enabling placeholders
Fixes: 159667766
Test: ./gradlew paging:paging-common:test
RelNote: "Setting PagingConfig.maxSize no longer enables placeholders
after a drop event"
Change-Id: I2be299e5ce094c8c7460295ff5218758a65dfd1f
M paging/common/src/main/kotlin/androidx/paging/PageFetcherSnapshot.kt
M paging/common/src/main/kotlin/androidx/paging/PagerState.kt
M paging/common/src/test/kotlin/androidx/paging/PageFetcherSnapshotStateTest.kt
M paging/common/src/test/kotlin/androidx/paging/PageFetcherSnapshotTest.kt
https://android-review.googlesource.com/1350887
Branch: androidx-master-dev
commit 7ece31e73a3eabe7aabb81c7a2bc707d9f70a5ed
Author: Dustin Lam <dustinlam@google.com>
Date: Thu Jun 25 20:16:27 2020
Prevent drop events from enabling placeholders
Fixes: 159667766
Test: ./gradlew paging:paging-common:test
RelNote: "Setting PagingConfig.maxSize no longer enables placeholders
after a drop event"
Change-Id: I2be299e5ce094c8c7460295ff5218758a65dfd1f
M paging/common/src/main/kotlin/androidx/paging/PageFetcherSnapshot.kt
M paging/common/src/main/kotlin/androidx/paging/PagerState.kt
M paging/common/src/test/kotlin/androidx/paging/PageFetcherSnapshotStateTest.kt
M paging/common/src/test/kotlin/androidx/paging/PageFetcherSnapshotTest.kt
Description
Devices/Android versions reproduced on: Pixel 3 / Android 10
When defining PagingConfig with some limited maxSize and disabled placeholders the app may crash with KotlinNullPointerException due to some items being null in the underlying PagingData list (which is expected only when placeholders are enabled). In the previous version of the library (2.1.2) all item out of the maxSize limit were properly removed and itemCount always set to be no bigger than maxSize.
I've attached a sample app (paging3sandbox.zip) that demonstrates the issue. Here are the steps to reproduce the issue:
1. open the app and scroll somewhere up to item 60 (pages may be loading a bit slowly as I've emulated a network delay)
2. than scroll fast up to the first item in the list
3. the app crashed with KotlinNullPointerException
What is expected:
There are no null items in the list when placeholders are disabled. The itemCount in PagingDataAdapter is sized properly and is the same as the count of all non-null items in the list.
At least it was working this way in the version 2.1.2. If it is some expected changes in the API please let me know what am I doing wrong here.