更新首选项列表

时间:2012-05-26 08:08:56

标签: android android-listview preferences

我正在尝试使用onPreferenceClick方法更新我的列表。但该列表未更新。 onPreferenceClick被执行,因为我得到了名字并在日志中显示,但没有更新。

public class TransferPreference extends PreferenceFragment {
    private TransferHelper transferHelper = new TransferHelper();
    private ArrayList<String> names = new ArrayList<String>();
    private CharSequence[] charSequence;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preference_transfer);

        final MultiSelectListPreference preferenceTeams = (MultiSelectListPreference) findPreference("preferenceTranser_multiSelectListPreference_teams");
        preferenceTeams.setPersistent(false);
        preferenceTeams.setOnPreferenceClickListener(new OnPreferenceClickListener() {
            @Override
            public boolean onPreferenceClick(Preference preference) {
                names = transferHelper.getServerTeams(getActivity());
                int size = names.size();
                charSequence = names.toArray(new CharSequence[size]);
                preferenceTeams.setEntries(charSequence);
                preferenceTeams.setEntryValues(charSequence);
                return false;   
            }
        });
    }

}

我也在onPreferenceClick上试过这个:

Editor editor = preference.getEditor();
editor.clear();
names = transferHelper.getServerTeams(getActivity());
for (String name : names) {
    editor.putString(name, name);
}
editor.commit();

如果我将以下代码直接放在oncreate方法中(而不是在侦听器方法中),则会显示名称。但只有它的创造,如名称所示:)

names = transferHelper.getServerTeams(getActivity());
int size = names.size();
charSequence = names.toArray(new CharSequence[size]);
preferenceTeams.setEntries(charSequence);
preferenceTeams.setEntryValues(charSequence);

有人有想法吗? 抱歉我的英文不好,谢谢你的帮助。

编辑:我尝试在此方法中添加我的代码,但没有更新。

@Override
public void onResume() 

0 个答案:

没有答案