下面列出了android.preference.MultiSelectListPreference#setEntries ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* defines a multiSelectList preference
* @param preferenceKey Key of the preference
* @param registeredObjectNames set containing possible values in the list preference
* @param intentExtras intent passed to the fragment
*/
private void defineMultiSelectListPrefernece(String preferenceKey, Set<String> registeredObjectNames, Bundle intentExtras) {
MultiSelectListPreference preference = (MultiSelectListPreference) findPreference(preferenceKey);
CharSequence[] entries =
registeredObjectNames.toArray(new CharSequence[registeredObjectNames.size()]);
preference.setEntries(entries);
preference.setEntryValues(entries);
if(intentExtras != null){
if(intentExtras.getStringArray(preferenceKey) == null){
preference.setValues(null);
} else {
Set<String> selectedCorrections = new HashSet<>(Arrays.asList(intentExtras.getStringArray(preferenceKey)));
preference.setValues(selectedCorrections);
}
} else {
preference.setValues(new HashSet<String>());
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
// Load the preferences screen from an XML resource
addPreferencesFromResource(R.xml.preferences);
String[] pickerKeys = { PreferenceUtils.TRUST_STORE_LOCATION_KEY, PreferenceUtils.KEY_STORE_LOCATION_KEY };
for (String key: pickerKeys) {
FilechoserEditTextPreference picker = (FilechoserEditTextPreference) findPreference(key);
picker.setFragment(this);
}
PreferenceScreen pref = (PreferenceScreen) findPreference("pref_security");
if (SUPPORTED_CIPHER_SUITES.isEmpty()) {
SSLSocketFactory ssf = (SSLSocketFactory) SSLSocketFactory.getDefault();
ENABLED_CIPHER_SUITES.addAll(Arrays.asList(ssf.getDefaultCipherSuites()));
SUPPORTED_CIPHER_SUITES.addAll(Arrays.asList(ssf.getSupportedCipherSuites()));
}
MultiSelectListPreference ciphersPref = (MultiSelectListPreference) findPreference(PreferenceUtils.ENABLED_CIPHER_SUITES_KEY);
ciphersPref.setDefaultValue(ENABLED_CIPHER_SUITES.toArray(new String[ENABLED_CIPHER_SUITES.size()]));
ciphersPref.setEntryValues(SUPPORTED_CIPHER_SUITES.toArray(new String[SUPPORTED_CIPHER_SUITES.size()]));
ciphersPref.setEntries(SUPPORTED_CIPHER_SUITES.toArray(new String[SUPPORTED_CIPHER_SUITES.size()]));
} catch(Throwable t) {
t.printStackTrace();
}
}
private void setupWeekDaysPref() {
mPrefWeekDays = (MultiSelectListPreference) findPreference(PREF_KEY_QH_WEEKDAYS);
String[] days = new DateFormatSymbols(Locale.getDefault()).getWeekdays();
CharSequence[] entries = new CharSequence[7];
CharSequence[] entryValues = new CharSequence[7];
for (int i = 1; i <= 7; i++) {
entries[i - 1] = days[i];
entryValues[i - 1] = String.valueOf(i);
}
mPrefWeekDays.setEntries(entries);
mPrefWeekDays.setEntryValues(entryValues);
if (mPrefs.getStringSet(PREF_KEY_QH_WEEKDAYS, null) == null) {
Set<String> value = new HashSet<String>(Arrays.asList("2", "3", "4", "5", "6"));
mPrefs.edit().putStringSet(PREF_KEY_QH_WEEKDAYS, value).commit();
mPrefWeekDays.setValues(value);
}
}
/**
* set up protocol selection
*/
void setupElmCmdSelection()
{
MultiSelectListPreference pref =
(MultiSelectListPreference) findPreference(ELM_CMD_DISABLE);
ElmProt.CMD[] values = ElmProt.CMD.values();
HashSet<String> selections = new HashSet<>();
CharSequence[] titles = new CharSequence[values.length];
CharSequence[] keys = new CharSequence[values.length];
int i = 0;
for (ElmProt.CMD cmd : values)
{
titles[i] = cmd.toString();
keys[i] = cmd.toString();
if(!cmd.isEnabled()) selections.add(cmd.toString());
i++;
}
// set enries and keys
pref.setEntries(titles);
pref.setEntryValues(keys);
pref.setValues(selections);
}
private void loadGroup() {
// Consider adding more features here, such as those in Track and TrackPreferenceFragment
name = (EditTextPreference) findPreference("name");
name.setText(group.getName());
name.setSummary(group.getName());
description = (EditTextPreference) findPreference("description");
description.setText(group.getDescription());
description.setSummary(group.getDescription());
mTracksPref = (MultiSelectListPreference) findPreference("tracks");
mTracksPref.setValues(getTrackIdsForGroupAsSet(group.getId()));
mTracksPref.setEntries(getAllTrackNamesAsCharSeq());
mTracksPref.setEntryValues(getAllTrackIdsAsCharSeq());
mTracksPref.setSummary(getTrackNamesForSummary());
}
/**
* Helper Class to setup the default Unit Type preference list in code
*/
private void setUpUnitTypePrefs() {
PreferenceScreen screen = getPreferenceScreen();
MultiSelectListPreference listPref = new MultiSelectListPreference(super.getActivity());
listPref.setOrder(0);
listPref.setDialogTitle(R.string.unit_select_title);
listPref.setKey(UNIT_TYPE_PREF_KEY);
listPref.setSummary(R.string.unit_select_summary);
listPref.setTitle(R.string.unit_select_title);
listPref.setEntries(getUnitTypeNameArray(getResources()));
String[] keyArray = getUnitTypeKeyArray(getResources());
listPref.setEntryValues(keyArray);
final Set<String> result = new HashSet<>();
Collections.addAll(result, keyArray);
listPref.setDefaultValue(result);
screen.addPreference(listPref);
}
private void fillBuckets() {
this.bucketNames = PBApplication.getMediaStore().getBucketData();
final CharSequence[] ids = this.bucketNames.values().toArray(new CharSequence[this.bucketNames.size()]);
final CharSequence[] names = this.bucketNames.keySet().toArray(new CharSequence[this.bucketNames.size()]);
final MultiSelectListPreference bucketListPreference = (MultiSelectListPreference) findPreference(PBConstants.PREF_PICTURE_FOLDER_LIST);
bucketListPreference.setEntries(ids);
bucketListPreference.setEnabled(true);
bucketListPreference.setEntryValues(names);
setSummaries();
}
/**
* set up selection for PIDs
*/
void setupPidSelection()
{
MultiSelectListPreference itemList =
(MultiSelectListPreference) findPreference(KEY_DATA_ITEMS);
// collect data items for selection
items = ObdProt.dataItems.getSvcDataItems(ObdProt.OBD_SVC_DATA);
HashSet<String> selections = new HashSet<>();
CharSequence[] titles = new CharSequence[items.size()];
CharSequence[] keys = new CharSequence[items.size()];
// loop through data items
int i = 0;
for (EcuDataItem currItem : items)
{
titles[i] = currItem.label;
keys[i] = currItem.toString();
selections.add(currItem.toString());
i++;
}
// set enries and keys
itemList.setEntries(titles);
itemList.setEntryValues(keys);
// if there is no item selected, mark all as selected
if (itemList.getValues().size() == 0)
{
itemList.setValues(selections);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
String[] selections = getResources().getStringArray(R.array.sources_news_values);
Set<String> selectionSet = new HashSet<String>();
selectionSet.addAll(Arrays.asList(selections));
MultiSelectListPreference multiSelectPref = new MultiSelectListPreference(getActivity());
multiSelectPref.setKey("multi_pref");
multiSelectPref.setTitle(CHOIX_DES_SOURCES);
multiSelectPref.setEntries(R.array.sources_news);
multiSelectPref.setEntryValues(R.array.sources_news_values);
multiSelectPref.setDefaultValue(selectionSet);
getPreferenceScreen().addPreference(multiSelectPref);
// Make sure default values are applied. In a real app, you would
// want this in a shared function that is used to retrieve the
// SharedPreferences wherever they are needed.
// PreferenceManager.setDefaultValues(getActivity(),R.xml.advanced_preferences, false);
// Load the preferences from an XML resource
}