SharedPreference(FIFO)上的数组

时间:2014-10-17 13:02:49

标签: android arrays sharedpreferences storage

我想制作一个进度图,玩家将看到他最新的5场比赛历史得分。我的问题是我希望将其保存在SharedpPeference最新的5场比赛得分上,然后将其转移到加法Array。这将是这样的:

int[] x = { 1,2,3,4,5 };
int[] Addition = new int [x.length];

是否可以使用SharedPreference?我如何以FIFO方式制作它?因为我只需要最新的5场比赛得分?有人可以帮我解决这种逻辑吗?

2 个答案:

答案 0 :(得分:0)

您无法在Arrays中存储SharedPreferences

您可以存储名为scores的{​​{1}}。然后,在其中,使用String存储每个游戏。

int

然后当您创建SharedPreferences prefs = getSharedPrefs("score"); 以保存分数时创建每个

Editor

然后当有第六个游戏时,您需要移除第一个游戏或使用算法来获取最后一个游戏。

但是,在数据库或文件中存储/检索这些内容可能会更好/更容易。

See the docs about storage options

答案 1 :(得分:0)

使用此:

int x[] = { 1,2,3,4,5 };
String willSave = "";
for(int i=0 ; i<x.length ; i++){
    willSave += String.valueOf(x[i]) + ";";
}

saveString(getBaseContext(), "Values", "LastScores", willSave);

// Checking the last cached values      
String cachedValues = loadString(getBaseContext(), "Values", "LastScores");
String splitted[] = cachedValues.split(";");

int lastValues[] = new int[splitted.length];
for(int i=0 ; i<splitted.length ; i++){
    lastValues[i] = Integer.parseInt(splitted[i]);
}

函数saveStringloadString

public void saveString(Context c, String prefName, String key, String value){
    SharedPreferences settings = c.getSharedPreferences(prefName, 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.putString(key, value);
    editor.commit(); 
}

public String loadString(Context c, String prefName, String key){
    SharedPreferences settings = c.getSharedPreferences(prefName, 0);
    return new String(settings.getString(key, ""));
}

此代码执行此操作:首先将int数组转换为String,因为您无法将数组保存到sharedPrefs。然后再将此缓存的String转换为int数组。