summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/DropDownPreference.java
diff options
context:
space:
mode:
authorChris Wren <cwren@android.com>2015-06-09 12:06:54 -0400
committerChris Wren <cwren@android.com>2015-06-09 12:09:44 -0400
commit182134595b9ba63607afceca9c77d62a6ac74066 (patch)
tree2c4294f846d8d7351fcba49e33d68e7db3dd50f1 /src/com/android/settings/DropDownPreference.java
parentfa47bc02900d407e1a730039e94221c2efc160d0 (diff)
downloadpackages_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.java11
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);