summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorFelipe Leme <felipeal@google.com>2017-03-24 21:26:25 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-03-24 21:26:32 +0000
commit51707a9733606d50b042f8551a9b806cae77a8e9 (patch)
treec9231da689c756810296fc985f47e49b79850a5e /core/java/android
parent36a44f070e4e96a16a0d3bf3bc399172aa1fbda7 (diff)
parent119205629e81d3a4cc5c419317c43c5ba5e44a51 (diff)
Merge "Checks if an adapter item is null before addint it to options."
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/widget/AbsSpinner.java20
1 files changed, 16 insertions, 4 deletions
diff --git a/core/java/android/widget/AbsSpinner.java b/core/java/android/widget/AbsSpinner.java
index fae574289b88..8f662ba79d5f 100644
--- a/core/java/android/widget/AbsSpinner.java
+++ b/core/java/android/widget/AbsSpinner.java
@@ -498,18 +498,30 @@ public abstract class AbsSpinner extends AdapterView<SpinnerAdapter> {
public void onProvideAutofillStructure(ViewStructure structure, int flags) {
super.onProvideAutofillStructure(structure, flags);
- if (getAdapter() == null) return;
+ final SpinnerAdapter adapter = getAdapter();
+
+ if (adapter == null) return;
// TODO(b/33197203): implement sanitization so initial value is only sanitized when coming
// from resources.
- final int count = getAdapter().getCount();
+ final int count = adapter.getCount();
+ int size = 0;
if (count > 0) {
final String[] options = new String[count];
for (int i = 0; i < count; i++) {
- options[i] = getAdapter().getItem(i).toString();
+ final Object item = adapter.getItem(i);
+ if (item != null) {
+ options[size++] = item.toString();
+ }
+ }
+ if (size == count) {
+ structure.setAutofillOptions(options);
+ } else {
+ final String[] validOptions = new String[size];
+ System.arraycopy(options, 0, validOptions, 0, size);
+ structure.setAutofillOptions(validOptions);
}
- structure.setAutofillOptions(options);
}
}