diff options
author | Adam Powell <adamp@google.com> | 2013-04-10 11:27:08 -0700 |
---|---|---|
committer | Adam Powell <adamp@google.com> | 2013-04-10 11:27:08 -0700 |
commit | 72d574cbe0448f125e452140f13dce20e02ed960 (patch) | |
tree | 450c6098f9fb8128452251695d613449b73cc17f | |
parent | 8f980e1a5ae99d5e34aaef6aac7f38a7d0038631 (diff) | |
download | frameworks_base-72d574cbe0448f125e452140f13dce20e02ed960.zip frameworks_base-72d574cbe0448f125e452140f13dce20e02ed960.tar.gz frameworks_base-72d574cbe0448f125e452140f13dce20e02ed960.tar.bz2 |
Permit null adapters in Spinners
Bug 8538144
Change-Id: I83f0ae78ce15f46827fb721cd0df1972b7d9d198
-rw-r--r-- | core/java/android/widget/Spinner.java | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/core/java/android/widget/Spinner.java b/core/java/android/widget/Spinner.java index b6895a5..e3de0b9 100644 --- a/core/java/android/widget/Spinner.java +++ b/core/java/android/widget/Spinner.java @@ -494,20 +494,23 @@ public class Spinner extends AbsSpinner implements OnClickListener { // Make selected view and position it mFirstPosition = mSelectedPosition; - View sel = makeAndAddView(mSelectedPosition); - int width = sel.getMeasuredWidth(); - int selectedOffset = childrenLeft; - final int layoutDirection = getLayoutDirection(); - final int absoluteGravity = Gravity.getAbsoluteGravity(mGravity, layoutDirection); - switch (absoluteGravity & Gravity.HORIZONTAL_GRAVITY_MASK) { - case Gravity.CENTER_HORIZONTAL: - selectedOffset = childrenLeft + (childrenWidth / 2) - (width / 2); - break; - case Gravity.RIGHT: - selectedOffset = childrenLeft + childrenWidth - width; - break; + + if (mAdapter != null) { + View sel = makeAndAddView(mSelectedPosition); + int width = sel.getMeasuredWidth(); + int selectedOffset = childrenLeft; + final int layoutDirection = getLayoutDirection(); + final int absoluteGravity = Gravity.getAbsoluteGravity(mGravity, layoutDirection); + switch (absoluteGravity & Gravity.HORIZONTAL_GRAVITY_MASK) { + case Gravity.CENTER_HORIZONTAL: + selectedOffset = childrenLeft + (childrenWidth / 2) - (width / 2); + break; + case Gravity.RIGHT: + selectedOffset = childrenLeft + childrenWidth - width; + break; + } + sel.offsetLeftAndRight(selectedOffset); } - sel.offsetLeftAndRight(selectedOffset); // Flush any cached views that did not get reused above mRecycler.clear(); |