gpt4 book ai didi

android - MultiSelectListPreference onPreferenceChange() 方法获取错误参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:38 24 4
gpt4 key购买 nike

我有一个带有 MultiSelectListPreference 的 Android 应用程序,我正在使用 onPreferenceChange() 方法来更新首选项的摘要。我已经设法编写了根据 newValues 参数更新摘要的代码,但对象的内容与用户选择的实际选项不匹配。

这是我的代码:

public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference instanceof MultiSelectListPreference) {
List<String> newValues = new ArrayList<>((HashSet<String>) newValue);

MultiSelectListPreference pref = (MultiSelectListPreference) preference;
ArrayList<String> newSummary = new ArrayList<>();

ArrayList<CharSequence> values = new ArrayList<>(Arrays.asList(pref.getEntryValues()));

for (int i = 0; i < newValues.size(); i++) {
int currentIndex = findIndexOfString(values, newValues.get(i).replaceAll(" ", ""));

String title = (currentIndex >= 0) ? pref.getEntries()[currentIndex].toString().replaceAll(" ", "") : "";

newSummary.add(title);
}

pref.setSummary(TextUtils.join(", ", newSummary));
}

return true;
}

private static int findIndexOfString(List<CharSequence> list, String s) {
for (int i = 0; i < list.size(); i++) {
if (s.equals(list.get(i).toString().replaceAll(" ", ""))) {
return i;
}
}

return -1;
}

最佳答案

这是我用来根据从 onPreferenceChange() 接收到的 newValue 对象设置摘要的代码,其中包含作为首选项存储的值。 (不利于总结)

public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference instanceof MultiSelectListPreference) {
List<String> newValues = new ArrayList<>((HashSet<String>) newValue);

pref.setSummary(TextUtils.join(", ", getSummaryListFromValueList(newValues)));
}

return true;
}

private List<String> getSummaryListFromValueList(List<String> valueList) {
String[] allSummaries = getResources().getStringArray(R.array.pref_notif);
String[] allValues = getResources().getStringArray(R.array.pref_notif_values);

List<String> summaryList = new ArrayList<>();
for (int i = 0; i < allValues.length; i++) {
for (String value : valueList) {
if (allValues[i].equals(value)) {
summaryList.add(allSummaries[i]);
}
}
}
return summaryList;
}

关于android - MultiSelectListPreference onPreferenceChange() 方法获取错误参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45533270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com