Android高分数的共享偏好设置示例?

4

你好,我想知道有没有使用共享偏好设置实现高分榜的简单示例?即在开始时拥有预先确定的高分,并根据用户得分更新列表。

3个回答

2
如果您想使用共享首选项,问题在于您不能真正地存储列表或类似的东西。共享首选项仅支持布尔值、浮点数、整数、字符串、长整型和集合。
因此,您最好选择 Set。在那里,您可以将每个高分值转换为字符串,将其添加到 Set 中,然后将此 set 存储在共享首选项中。
在启动应用程序期间,您可以检索集合,将字符串转换回整数或其他用于表示高分的值。
例如,请参见此方法: http://developer.android.com/reference/android/content/SharedPreferences.Editor.html#putStringSet(java.lang.String, java.util.Set}
编辑
正如 MisterSqounk 指出的那样,Set 仅在 API 级别 11 及以上才可用。因此,如果您编写的代码低于此级别,建议直接将值作为整数存储,并使用类似 highscore1、highscore2 等键。在检索高分值时,您可以遍历所有键,并使用 SharedPreferences#contains(String key) 检查是否有可用值。

3
在Android v3.0中,SharedPreferences引入了字符串集(String Sets),因此在此之前是不可用的。 - Squonk
1
@MisterSquonk 非常感谢。这使得解决方案更加复杂了。但是OP没有提到API级别。我已经编辑了答案,以便它适用于所有API级别。 - RoflcoptrException
如果列表是静态的,那么您可以在首选项屏幕中使用 ListPreference 项目类型来保存所选项目的位置。您仍然可以使用动态列表,只需将所选项目的ID存储在首选项中,并将列表存储在数据库中即可。 - Joseph Earl
@Joseph Earl,我在API中找不到你的ListPreference。你能提供一个链接吗? - RoflcoptrException
当然:http://developer.android.com/reference/android/preference/ListPreference.html - Joseph Earl

0
不久前,我实现了一个库,使用MEMDISKCACHE和SHAREDPREF作为GENERIC_STORE。您甚至可以存储/检索可序列化的Java对象。例如,要满足您的需求,只需创建自定义可序列化Java对象,然后即可开始使用。
我已经在我的应用程序中使用它(甚至用于大量的Facebook照片数据),效果非常好,就像抽象层一样。
如果有人感兴趣,这里是源代码。 https://github.com/wareninja/generic-store-for-android

0
如果您仍在寻找解决方案,Swarm's Leaderboards 系统似乎是一个很好的选择。它为游戏添加可定制的排行榜提供了简单的解决方案,并且使用起来相当容易。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接