summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2010-10-06 10:43:18 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-10-06 10:43:18 -0700
commit32e60fbea7888dcc4cb9612f27674888bb56f9c3 (patch)
tree037af58550a59430b289a641ec04265c2a0c5784
parent128cecab968337038591cc14e3cdd5b37b2e5cb9 (diff)
parent3042944c6ec68210ba1746540b53789e70d15ef4 (diff)
downloadframeworks_base-32e60fbea7888dcc4cb9612f27674888bb56f9c3.zip
frameworks_base-32e60fbea7888dcc4cb9612f27674888bb56f9c3.tar.gz
frameworks_base-32e60fbea7888dcc4cb9612f27674888bb56f9c3.tar.bz2
Merge "Fixing AdapterViewAnimator crash when associated adapter is empty"
-rw-r--r--core/java/android/widget/AdapterViewAnimator.java9
-rw-r--r--core/java/android/widget/StackView.java4
2 files changed, 10 insertions, 3 deletions
diff --git a/core/java/android/widget/AdapterViewAnimator.java b/core/java/android/widget/AdapterViewAnimator.java
index 1d1e601..b7b1a23 100644
--- a/core/java/android/widget/AdapterViewAnimator.java
+++ b/core/java/android/widget/AdapterViewAnimator.java
@@ -324,7 +324,11 @@ public abstract class AdapterViewAnimator extends AdapterView<Adapter>
}
private int modulo(int pos, int size) {
- return (size + (pos % size)) % size;
+ if (size > 0) {
+ return (size + (pos % size)) % size;
+ } else {
+ return 0;
+ }
}
/**
@@ -383,6 +387,8 @@ public abstract class AdapterViewAnimator extends AdapterView<Adapter>
void showOnly(int childIndex, boolean animate, boolean onLayout) {
if (mAdapter == null) return;
+ final int adapterCount = mAdapter.getCount();
+ if (adapterCount == 0) return;
for (int i = 0; i < mPreviousViews.size(); i++) {
View viewToRemove = mViewsMap.get(mPreviousViews.get(i)).view;
@@ -399,7 +405,6 @@ public abstract class AdapterViewAnimator extends AdapterView<Adapter>
removeViewInLayout(viewToRemove);
}
mPreviousViews.clear();
- int adapterCount = mAdapter.getCount();
int newWindowStartUnbounded = childIndex - mActiveOffset;
int newWindowEndUnbounded = newWindowStartUnbounded + mNumActiveViews - 1;
int newWindowStart = Math.max(0, newWindowStartUnbounded);
diff --git a/core/java/android/widget/StackView.java b/core/java/android/widget/StackView.java
index 839de7d..f0954e2 100644
--- a/core/java/android/widget/StackView.java
+++ b/core/java/android/widget/StackView.java
@@ -749,7 +749,9 @@ public class StackView extends AdapterViewAnimator {
if (mAdapter != null && mWhichChild == -1) {
mWhichChild = mAdapter.getCount() - 1;
}
- setDisplayedChild(mWhichChild);
+ if (mWhichChild >= 0) {
+ setDisplayedChild(mWhichChild);
+ }
}
LayoutParams createOrReuseLayoutParams(View v) {