从共享首选项将Array传递给ArrayAdapter。的Android

时间:2016-04-22 19:06:38

标签: java android sharedpreferences

下午所有,

我对android和java一般都很陌生,所以我不确定我想要实现的是这样的。

我正在尝试在共享首选项类中实现Get和Set方法以保存数组并在需要时再次将其取出。在一个完美的世界里,我会使用下面的代码:

public class dataStorage {
private SharedPreferences sharedPreferences;
private static String PREF_NAME = "prefs";

public dataStorage() {
    // Blank
}

private static String[] getPuzzleList(Context context, String key)
{
    return getPrefs(context).getArray(PREF_NAME, Context.MODE_PRIVATE);

}

private static void setPuzzleList(Context context, String key, String[] stringArray)
{
    SharedPreferences.Editor editor = getPrefs(context).edit();
    editor.putArray(key, stringArray);
    editor.commit();
}

private static SharedPreferences getPrefs(Context context) {
    return context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
}

public static String getPuzzle(Context context, String key) {
    return getPrefs(context).getString(key, "default_string");
}

public static void setPuzzle(Context context, String key, String value) {
    SharedPreferences.Editor editor = getPrefs(context).edit();
    editor.putString(key , value);
    editor.commit();
}
}

我对单个拼图的设置和设置工作正常,因为putStringgetString是有效的方法,而getArray和`putArray则不是。

我是否可以使用方法调用将字符串数组传入和传出共享首选项,或者我是否必须实现forloops才能将它们保存为单独的字符串?当我想传递给ArrayAdapter时,使用另一个for循环将所有字符串重新组合成一个数组?

欢迎任何反馈。感谢。

2 个答案:

答案 0 :(得分:1)

您可以放置 Set

private static void setPuzzleList(Context context, String key, String[] stringArray) {
    SharedPreferences.Editor editor = getPrefs(context).edit();
    Set<String> set = new HashSet<String>();
    set.addAll(Arrays.asList(stringArray));
    editor.putStringSet("key", set);
    editor.commit();
}

答案 1 :(得分:0)

存储数组

public static void storeArray()
{
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences.Editor editor = sp.edit();


    for(int i=0;i<stringArray.length;i++)  
    {
       editor.putString("key" + i, stringArray[i]);  
    }

 editor.commit();     
}