From 49a38c6f1cb586232da6d16cbcf87178c3840367 Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Tue, 13 Jun 2017 12:51:43 -0700 Subject: [PATCH] Added BaseAdapter.setAutofillOptions() Also changed ArrayAdapter to use it, when set. Fixes: 37518906 Test: cts-tradefed run commandAndExit cts-dev -m CtsWidgetTestCases -t android.widget.cts.BaseAdapterTest Test: cts-tradefed run commandAndExit cts-dev -m CtsWidgetTestCases -t android.widget.cts.ArrayAdapterTest Test: m update-api Change-Id: I5e883555b0fb9d084b57b9239595bf0632fc41af --- api/current.txt | 1 + api/system-current.txt | 1 + api/test-current.txt | 1 + core/java/android/widget/ArrayAdapter.java | 7 +++++++ core/java/android/widget/BaseAdapter.java | 14 ++++++++++++++ 5 files changed, 24 insertions(+) diff --git a/api/current.txt b/api/current.txt index 71d8bd15391fc..d2c67adf491b2 100644 --- a/api/current.txt +++ b/api/current.txt @@ -49515,6 +49515,7 @@ package android.widget { method public void notifyDataSetChanged(); method public void notifyDataSetInvalidated(); method public void registerDataSetObserver(android.database.DataSetObserver); + method public void setAutofillOptions(java.lang.CharSequence...); method public void unregisterDataSetObserver(android.database.DataSetObserver); } diff --git a/api/system-current.txt b/api/system-current.txt index e020bfd4807d5..648bb54ac7116 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -53433,6 +53433,7 @@ package android.widget { method public void notifyDataSetChanged(); method public void notifyDataSetInvalidated(); method public void registerDataSetObserver(android.database.DataSetObserver); + method public void setAutofillOptions(java.lang.CharSequence...); method public void unregisterDataSetObserver(android.database.DataSetObserver); } diff --git a/api/test-current.txt b/api/test-current.txt index 51143475d263d..2530d6849248c 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -49931,6 +49931,7 @@ package android.widget { method public void notifyDataSetChanged(); method public void notifyDataSetInvalidated(); method public void registerDataSetObserver(android.database.DataSetObserver); + method public void setAutofillOptions(java.lang.CharSequence...); method public void unregisterDataSetObserver(android.database.DataSetObserver); } diff --git a/core/java/android/widget/ArrayAdapter.java b/core/java/android/widget/ArrayAdapter.java index 74f22b35e0019..690067b481330 100644 --- a/core/java/android/widget/ArrayAdapter.java +++ b/core/java/android/widget/ArrayAdapter.java @@ -526,6 +526,13 @@ public class ArrayAdapter extends BaseAdapter implements Filterable, ThemedSp */ @Override public CharSequence[] getAutofillOptions() { + // First check if app developer explicitly set them. + final CharSequence[] explicitOptions = super.getAutofillOptions(); + if (explicitOptions != null) { + return explicitOptions; + } + + // Otherwise, only return options that came from static resources. if (!mObjectsFromResources || mObjects == null || mObjects.isEmpty()) { return null; } diff --git a/core/java/android/widget/BaseAdapter.java b/core/java/android/widget/BaseAdapter.java index c960342f7c652..5838cc15cf92d 100644 --- a/core/java/android/widget/BaseAdapter.java +++ b/core/java/android/widget/BaseAdapter.java @@ -16,6 +16,7 @@ package android.widget; +import android.annotation.Nullable; import android.database.DataSetObservable; import android.database.DataSetObserver; import android.view.View; @@ -29,6 +30,7 @@ import android.view.ViewGroup; */ public abstract class BaseAdapter implements ListAdapter, SpinnerAdapter { private final DataSetObservable mDataSetObservable = new DataSetObservable(); + private CharSequence[] mAutofillOptions; public boolean hasStableIds() { return false; @@ -82,4 +84,16 @@ public abstract class BaseAdapter implements ListAdapter, SpinnerAdapter { public boolean isEmpty() { return getCount() == 0; } + + @Override + public CharSequence[] getAutofillOptions() { + return mAutofillOptions; + } + + /** + * Sets the value returned by {@link #getAutofillOptions()} + */ + public void setAutofillOptions(@Nullable CharSequence... options) { + mAutofillOptions = options; + } }