我创建了一个简单的游戏。在结束时,用户的姓名和分数应该进入高分榜。为此,我想将这些数据存储在sharedpreferences中。我看到了一篇帖子,并试图将其应用于我的应用程序,但它强制关闭了。我甚至不知道我是否做对了。因此,我将这些键值对(玩家,分数)放入了一个arraylist中。从那里,我可以将值取出并放入listview中。 这只是一个示例。
SharedPreferences.Editor scoreEditor = myScores.edit();
scoreEditor.putString("PLAYER", "Thomas");
scoreEditor.putString("SCORE", "5");
scoreEditor.commit();
final ArrayList<HashMap<String,String>> LIST = new ArrayList<HashMap<String,String>>();
Map<String, ?> items = myScores.getAll();
for(String s : items.keySet()){
HashMap<String,String> hmap = new HashMap<String,String>();
hmap.put("PLAYER", s);
hmap.put("SCORE", items.get(s).toString());
LIST.add(hmap);
}
Toast.makeText(Start.this, "LIST size: "+LIST.size(), Toast.LENGTH_LONG).show();
对于我来说,如果我像这样存储这些数据也是可以的:
scoreEditor.putString("DATA", "Thomas" + "-" + "5");
并将其放入ArrayList<String> LIST = new ArrayList<String>();
中。
但我不知道该怎么做。
你们能帮我吗?
编辑:正如Haphazard所建议的,我可以采取另一种方法。我编写了这段代码,但我不知道这是否是正确的方法。由于sharedpreferences存在问题,我还在尝试解决它,因此还没有进行测试。
SharedPreferences.Editor scoreEditor = myScores.edit();
scoreEditor.putString("DATA", "Thomas" + "-" + "5");
scoreEditor.commit();
HashSet<String> hset=new HashSet<String>();
hset.addAll((Collection<? extends String>) myScores.getAll());
ArrayList<String> LIST = new ArrayList<String>(hset);