diff options
| author | Adam Cohen <adamcohen@google.com> | 2010-10-06 10:43:18 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-10-06 10:43:18 -0700 |
| commit | 32e60fbea7888dcc4cb9612f27674888bb56f9c3 (patch) | |
| tree | 037af58550a59430b289a641ec04265c2a0c5784 | |
| parent | 128cecab968337038591cc14e3cdd5b37b2e5cb9 (diff) | |
| parent | 3042944c6ec68210ba1746540b53789e70d15ef4 (diff) | |
| download | frameworks_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.java | 9 | ||||
| -rw-r--r-- | core/java/android/widget/StackView.java | 4 |
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) { |
