Android 如何使用共享首选项保持时间和分数

Android 如何使用共享首选项保持时间和分数,android,arraylist,sharedpreferences,Android,Arraylist,Sharedpreferences,我正在开发一个简单的应用程序,就像游戏一样。当我完成游戏后,页面显示了时间和分数。现在如果我想一次又一次地玩这个游戏。如何存储以前所有的时间和分数和当前完成 我想显示,所有的时间和分数在列表中根据高到低的分数,分数按钮被点击后 我已经在gaveover页面中完成了共享首选项,该值是从score页面获得的。但是为什么不在我第三次玩的时候显示呢。第二次还行。第三次等等。。只是向上替换。我没有足够的想法,如何将所有信息存储到数组中并显示在列表上。但我已经尝试使用地图,但没有更多的想法 我想在“分数”页

我正在开发一个简单的应用程序,就像游戏一样。当我完成游戏后,页面显示了时间和分数。现在如果我想一次又一次地玩这个游戏。如何存储以前所有的时间和分数和当前完成

我想显示,所有的时间和分数在列表中根据高到低的分数,分数按钮被点击后

我已经在gaveover页面中完成了共享首选项,该值是从score页面获得的。但是为什么不在我第三次玩的时候显示呢。第二次还行。第三次等等。。只是向上替换。我没有足够的想法,如何将所有信息存储到数组中并显示在列表上。但我已经尝试使用地图,但没有更多的想法

我想在“分数”页面中显示这种格式:

时间。。。。。。。。。。。。。。得分

1:10。。。。。。。。。。。。。。175

2:05。。。。。。。。。。。。。。145

1:15。。。。。。。。。。。。。。110

2:50。。。。。。。。。。。。。。。九十

在这里,我刚开始编写一些小代码,但并不完整和更好

Java

Score.Java


请给我一个好的建议,怎么做?

最干净的方法是使用sqlite数据库

使用SharedReference要容易得多,特别是对于初学者。 您可以这样做:保存第三项,即实际条目计数作为SharedReference。 每次保存新条目时,都会增加此计数器。 然后将当前计数器编号附加到时间和分数键

// Saves a new entry | Attention: code not tested!
save(int score, int time){
 SharedPreference pref = ...
 SharedPreference.Editor editor = ...

 int newEntryID = pref.getInt("numEntries", 0) + 1;

 editor.setInt("numEntries", newEntryID);
 editor.setInt("score" + newEntryID, score);
 editor.setString("time" + newEntryID, time); 
 editor.commit();
}
假设score是score的SharedPreference键,并且在当时是相同的

阅读也是一样的

for(int i=0; i<numEntries; ++i){
  pref.getInt("score" + i, 0);
  ...
}

使用共享首选项,您可以同时存储

1首先,你必须存储时间,一旦完成,你必须存储给定时间对应的分数

你这样做, edit.putStringDATA,strTime++intScore

但是如果一次只有一个玩家,你可以采取不同的方法, edit.putStringTIME,strTime; edit.putStringstrTime,strScore

1:10。。。。。。。。。。。。。。175 因此,首先你用时间映射你的时间,然后你用1:10映射175分


希望这能帮助您

好主意是定义JavaBean持有分数,比如用两个字段,时间(秒)/分数/可能是日期/名称/您想存储的其他字段。您可以轻松地使用它们执行以下操作:

在一个列表中排序并限制他们的数量。如果你不喜欢有10000个分数条目,100个将是一个很高的分数 在JSON无耻的自我宣传中整理此列表: 将JSON存储在共享首选项或私有应用程序文件中我最多存储100个本地高分条目,以及1000个所有时间分数和使用文件
// Saves a new entry | Attention: code not tested!
save(int score, int time){
 SharedPreference pref = ...
 SharedPreference.Editor editor = ...

 int newEntryID = pref.getInt("numEntries", 0) + 1;

 editor.setInt("numEntries", newEntryID);
 editor.setInt("score" + newEntryID, score);
 editor.setString("time" + newEntryID, time); 
 editor.commit();
}
for(int i=0; i<numEntries; ++i){
  pref.getInt("score" + i, 0);
  ...
}