diff options
| author | 2013-04-10 11:27:08 -0700 | |
|---|---|---|
| committer | 2013-04-10 11:27:08 -0700 | |
| commit | 72d574cbe0448f125e452140f13dce20e02ed960 (patch) | |
| tree | 450c6098f9fb8128452251695d613449b73cc17f | |
| parent | 8f980e1a5ae99d5e34aaef6aac7f38a7d0038631 (diff) | |
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 b6895a59e0a8..e3de0b9e75f0 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(); |