我可以使用sharedPreferences文件中的项填充AlertDialog吗?

时间:2012-09-21 16:16:41

标签: android sharedpreferences android-alertdialog

我已经设置了如下的SharedPreferences:

Editor editor = getSharedPreferences("FileName", MODE_PRIVATE).edit();
        editor.clear();
        editor.putString("chicago", "Chicago, IL");
        editor.putString("london", "London, UK");
            editor.putString("sanjose", "San Jose, CA");
            editor.putString("washington", "Dulles, VA");
        editor.commit();

目前我从数组填充AlertDialog,我想使用SharedPreferences文件,所以我最终可以动态添加项目等。

我现在用来填充的代码是:

private void openServerDialog() {
        new AlertDialog.Builder(this)   
        .setTitle(R.string.server_title)
        .setItems(R.array.serverchoice, 
                new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialoginterface,
                    int i) {
                setServer(i);   
            }
        })
        .show();
    }

所以我只想停止使用数组“serverchoice”,而是使用SharedPreferences文件中的字符串。

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以使用SharedPreferences对象的getString()方法从共享首选项中检索字符串。请参阅the documentation for SharedPreferences

修改 OP发表评论后调整后的答案。

private void openServerDialog() {
    SharedPreferences sharedPrefs = getSharedPreferences("FileName", MODE_PRIVATE);
    Map<String, ?> sharedPrefsMap = sharedPrefs.getAll();
    ArrayList<String> stringArrayList = sharedPrefsMap.values();
    CharSequence[] prefsCharSequence = stringArrayList.toArray(new CharSequence[stringArrayList.size()]);

    new AlertDialog.Builder(this)   
    .setTitle(R.string.server_title)
    .setItems(prefsCharSequence, 
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialoginterface,
            int i) {
            setServer(i);   
        }
    })
    .show();
}

答案 1 :(得分:0)

Use getAll() method in SharedPreferences to get all the keys. And get all the keys and values and display in dialog.

SharedPreferences prefs = getSharedPreferences("FileName", MODE_PRIVATE);
    Map<String, ?> map = prefs.getAll();
    Set<String> keys = map.keySet();
    for(String key : keys) {
        Log.d(TAG, "key : " + key);
            Log.d(TAG, "value : " + map.get(key));
    }