I want to retrieve the names of classes as V, VI, VII from the preferences, however, I am getting them in the format 5,6,7 when I try to fetch it.
Values are stored as follows
<string name="pref_standard">Standard</string>
<string-array name="pref_standard_list_titles">
<item>V</item>
<item>VI</item>
<item>VII</item>
<item>VIII</item>
<item>IX</item>
<item>X</item>
<item>XI</item>
<item>XII</item>
</string-array>
<string-array name="pref_standard_list_values">
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>10</item>
<item>11</item>
<item>12</item>
</string-array>
The preference is declared as
<ListPreference
android:key="standards_list"
android:title="@string/pref_standard"
android:defaultValue="10"
android:entries="@array/pref_standard_list_titles"
android:entryValues="@array/pref_standard_list_values"
android:negativeButtonText="@null"
android:positiveButtonText="@null"/>
I call the value using this
SharedPreferences sharedPref=PreferenceManager.getDefaultSharedPreferences(getActivity());
String standard_name=sharedPref.getString("standards_list","");
This gives only the numeric values which are in "pref_standard_list_values".
How to get the textual values which are in "pref_standard_list_titles"?
Just remove the line
android:entryValues="@array/pref_standard_list_values"
If you want to translate values in code, use
String[] texts = getResources().getStringArray(R.array.pref_standard_list_titles);
String[] values = getResources().getStringArray(R.array.pref_standard_list_values);
And lookup the index of standard_name
in values
, and its text at that index in texts
To get entries try this:
String key = "standards_list";
Preference pref = findPreference(key);
if (pref instanceof ListPreference) {
ListPreference listPref = (ListPreference) pref;
CharSequence standard_name = listPref.getEntry(); // get currently saved into SharedPreferences single entry value
CharSequence[] standard_values = listPref.getEntries(); // get all entry values
}
For more use cases read this .
To get name of current selected entry value, use this:
public StringBuilder getSelectedStandardListItem() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append('\n');
String current_standard_list_item = prefs.getString("pref_standard_list_values", "");
String[] standard_list = getResources().getStringArray(R.array.pref_standard_list_titles);
String[] standard_list_value = getResources().getStringArray(R.array.pref_standard_list_values);
for (int i = 0; i < 7; i++) {
if (current_standard_list_item.equals(standard_list_value[i])) {
switch (i) {
case 0:
stringBuilder.append(standard_list[0]);
break;
case 1:
stringBuilder.append(standard_list[1]);
break;
case 2:
stringBuilder.append(standard_list[2]);
break;
case 3:
stringBuilder.append(standard_list[3]);
break;
case 4:
stringBuilder.append(standard_list[4]);
break;
case 5:
stringBuilder.append(standard_list[5]);
break;
case 6:
stringBuilder.append(standard_list[6]);
break;
case 7:
stringBuilder.append(standard_list[7]);
break;
}
}
}
return stringBuilder;
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.