summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/widget/AbsListView.java7
1 files changed, 5 insertions, 2 deletions
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index 7ea0613..3fd0e5d 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -7196,7 +7196,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
// within that row by subtracting the height of each preceeding row.
int remainingOffset = mOffset;
int targetHeight = getHeightForRow(targetRow);
- while (targetRow > 0 && remainingOffset > targetHeight) {
+ while (targetRow > 1 && remainingOffset > targetHeight) {
targetRow--;
remainingOffset -= targetHeight;
targetHeight = getHeightForRow(targetRow);
@@ -7204,7 +7204,10 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
// Compute the offset within the actual target row.
final float targetOffsetRatio;
- if (targetHeight == 0) {
+ if (remainingOffset > 0) {
+ // We can't reach that offset given the row count.
+ targetOffsetRatio = 0;
+ } else if (targetHeight == 0) {
targetOffsetRatio = 1;
} else {
targetOffsetRatio = remainingOffset / (float) targetHeight;