Keep candidates in radio button picker UI ordered
We will use the order from candidate list.
Change-Id: I3f5bfb9d603d6c926fddd4711e2899df10cb72ac
Fix: 37542504
Test: make RunSettingsRoboTests
diff --git a/src/com/android/settings/widget/RadioButtonPickerFragment.java b/src/com/android/settings/widget/RadioButtonPickerFragment.java
index 2444539..6854793 100644
--- a/src/com/android/settings/widget/RadioButtonPickerFragment.java
+++ b/src/com/android/settings/widget/RadioButtonPickerFragment.java
@@ -118,7 +118,7 @@
String key, CandidateInfo info, String defaultKey, String systemDefaultKey) {
}
- @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ @VisibleForTesting
public void updateCandidates() {
mCandidates.clear();
final List<? extends CandidateInfo> candidateList = getCandidates();
@@ -139,16 +139,18 @@
nonePref.setOnClickListener(this);
screen.addPreference(nonePref);
}
- for (Map.Entry<String, CandidateInfo> app : mCandidates.entrySet()) {
- RadioButtonPreference pref = new RadioButtonPreference(getPrefContext());
- bindPreference(pref, app.getKey(), app.getValue(), defaultKey);
- bindPreferenceExtra(pref, app.getKey(), app.getValue(), defaultKey, systemDefaultKey);
- screen.addPreference(pref);
+ if (candidateList != null) {
+ for (CandidateInfo info : candidateList) {
+ RadioButtonPreference pref = new RadioButtonPreference(getPrefContext());
+ bindPreference(pref, info.getKey(), info, defaultKey);
+ bindPreferenceExtra(pref, info.getKey(), info, defaultKey, systemDefaultKey);
+ screen.addPreference(pref);
+ }
}
mayCheckOnlyRadioButton();
}
- @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ @VisibleForTesting
public RadioButtonPreference bindPreference(RadioButtonPreference pref,
String key, CandidateInfo info, String defaultKey) {
pref.setTitle(info.loadLabel());
@@ -162,7 +164,7 @@
return pref;
}
- @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ @VisibleForTesting
public void updateCheckedState(String selectedKey) {
final PreferenceScreen screen = getPreferenceScreen();
if (screen != null) {
@@ -180,7 +182,7 @@
}
}
- @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ @VisibleForTesting
public void mayCheckOnlyRadioButton() {
final PreferenceScreen screen = getPreferenceScreen();
// If there is only 1 thing on screen, select it.