diff options
author | Chris Wren <cwren@android.com> | 2015-06-09 12:06:54 -0400 |
---|---|---|
committer | Chris Wren <cwren@android.com> | 2015-06-09 12:09:44 -0400 |
commit | 182134595b9ba63607afceca9c77d62a6ac74066 (patch) | |
tree | 2c4294f846d8d7351fcba49e33d68e7db3dd50f1 /src/com/android/settings/DropDownPreference.java | |
parent | fa47bc02900d407e1a730039e94221c2efc160d0 (diff) | |
download | packages_apps_Settings-182134595b9ba63607afceca9c77d62a6ac74066.zip packages_apps_Settings-182134595b9ba63607afceca9c77d62a6ac74066.tar.gz packages_apps_Settings-182134595b9ba63607afceca9c77d62a6ac74066.tar.bz2 |
don't double set the dropdown value
idion: set the default value, and then add a callback
actual: spinner posts the change to a handler: so it posts after the callback is set.
This makes it hard to count actual user interactions without counting the initialization.
Bug: 21530764
Change-Id: I3ff8319edb374d8d7c10982512054f303c69a5ec
Diffstat (limited to 'src/com/android/settings/DropDownPreference.java')
-rw-r--r-- | src/com/android/settings/DropDownPreference.java | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/com/android/settings/DropDownPreference.java b/src/com/android/settings/DropDownPreference.java index 89e67a5..ce4bb2f 100644 --- a/src/com/android/settings/DropDownPreference.java +++ b/src/com/android/settings/DropDownPreference.java @@ -36,6 +36,7 @@ public class DropDownPreference extends Preference { private final ArrayList<Object> mValues = new ArrayList<Object>(); private Callback mCallback; + private int mSelectedPosition = -1; public DropDownPreference(Context context) { this(context, null); @@ -54,7 +55,7 @@ public class DropDownPreference extends Preference { mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View v, int position, long id) { - setSelectedItem(position); + setSelectedItem(position, true); } @Override @@ -91,11 +92,19 @@ public class DropDownPreference extends Preference { } public void setSelectedItem(int position) { + setSelectedItem(position, false); + } + + public void setSelectedItem(int position, boolean fromSpinner) { + if (fromSpinner && position == mSelectedPosition) { + return; + } final Object value = mValues.get(position); if (mCallback != null && !mCallback.onItemSelected(position, value)) { return; } mSpinner.setSelection(position); + mSelectedPosition = mSpinner.getSelectedItemPosition(); setSummary(mAdapter.getItem(position)); final boolean disableDependents = value == null; notifyDependencyChange(disableDependents); |