gpt4 book ai didi

java - 使用新值更改 ListPreference 的摘要 (Android)

转载 作者:太空狗 更新时间:2023-10-29 22:58:57 24 4
gpt4 key购买 nike

如何将 ListPreference 的摘要修改为用户选择的新“条目”字符串(不是条目值)

我认为它与 setOnPreferenceChangeListener() 但在

new OnPreferenceChangeListener() {

@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
return true;
}
}

使用 ((ListPreference)preference).getEntry() 我得到旧值(因为它还没有改变)并且 newValue.toString() 返回条目值(不是显示给用户的条目文本)

我该怎么做?提前致谢

最佳答案

只需在xml描述中将摘要值设置为%s即可。

编辑:我已经在多个设备上测试过它,但它确实不起作用。这很奇怪,因为根据文档它必须工作:ListPreference.getSummary() .

但是可以自己实现这个功能。实现需要继承ListPreference类:

public class MyListPreference extends ListPreference {
public MyListPreference(final Context context) {
this(context, null);
}

public MyListPreference(final Context context, final AttributeSet attrs) {
super(context, attrs);
}

@Override
public CharSequence getSummary() {
final CharSequence entry = getEntry();
final CharSequence summary = super.getSummary();
if (summary == null || entry == null) {
return null;
} else {
return String.format(summary.toString(), entry);
}
}

@Override
public void setValue(final String value) {
super.setValue(value);
notifyChanged();
}
}

如您所见,MyListPreference 有自己的摘要字段,其中可以包含格式标记。当首选项的值发生变化时,将调用 Preference.notifyChanged() 方法,并导致从 Preference.onBindView() 调用 MyListPreference.getSummary() 方法

P.S.:此方法尚未经过充分测试,因此可能包含错误。

关于java - 使用新值更改 ListPreference 的摘要 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7017082/

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