当前位置: 首页 > 知识库问答 >
问题:

如何在设备上和全局上显示高分列表

况景龙
2023-03-14

我已经读了几个教程,但不能确切地确定我需要什么

我试图添加一个高分列表(大约10行)从人玩过游戏在我的设备上,然后在另一个标签,我想有来自世界各地的玩家高分列表。

目前,我所拥有的只是一行具有saved-pref高分,而名称是手动输入的(如何用名称保存每个高分?)

  1. 如何保存每个高分的名称?
  2. 如何保存包含10行高分列表?(使用我猜的数组?)
  3. 如何使用全球得分最高的10个选项卡填充领导板选项卡?(还包括每个选项卡的名称)

我的代码如下

java

private void setBestScore(int bestScore) {
    SharedPreferences.Editor editor = getContext().getSharedPreferences("gamepanel", MODE_PRIVATE).edit();
    editor.putInt("bestScore", bestScore);
    editor.apply();
}
 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    //Returning the layout file after inflating
    //Change R.layout.tab1 in you classes
    View myInflatedView = inflater.inflate(R.layout.tab1, container,false);

    TextView tv = (TextView) myInflatedView.findViewById(R.id.textView1);
    tv.setText("Name:"+ " Ken");

    TextView t = (TextView) myInflatedView.findViewById(R.id.textView2);
    t.setText("Score: " +getBestScore());

    return myInflatedView;

}

protected int getBestScore() {
    SharedPreferences prefs = getContext().getSharedPreferences("gamepanel", MODE_PRIVATE);
    return prefs.getInt("bestScore", 0);
}

共有1个答案

赵永新
2023-03-14

我可以看到您已经熟悉了共享首选项的用法,因为您正在使用它们来存储最好的分数。首先,我建议大家更加熟悉Android目前支持的可能存储选项的概念:

https://developer.android.com/guide/topics/data/data-storage.html

如果您希望您的数据在设备上保持持久性,则简单的Array/ArrayList或任何其他数据集合只能用于暂时存储在内存中,以便立即使用。只要你的应用程序还在使用,它就会存在,并且很快就会被清除,一旦Android意识到不再需要它。以上文档描述了永久存储数据的可能选项。

基本上,共享首选项是您的选择之一,通过这种方式,您可以存储简单的键值对,这些键值将在设备上持久化。如果您愿意,也可以用这种方式存储数据数组,但我真的认为这种方式不值得推荐。共享首选项对于存储和重用简单的单个值非常有用,特别是在它们不经常更新的情况下。对于任何不同值的集合,我建议使用简单的SQLite数据库:https://developer.android.com/guide/topics/data/data-storage.html#db

它们是非常轻量级的,所以它们不会为你的游戏增加太多的负载,如果你要消耗你的游戏,它还可以为你存储额外的数据。然后,您可以读取任意数量的以前的高分,因为您可以选择只存储10个值,但您也可以存储更多的值,并选择只显示10个值。在这种情况下,您可以从数据库中加载10个热门歌曲,将它们作为数组存储在本地内存中,并在简单的ListView中显示。

现在,当谈到在全球范围内存储价值时--我想你会想到全球排行榜?在这种情况下,您需要有一个外部服务器来存储所有最高分,应用程序只是一个客户机,不能直接与其他客户机对话(因为它不能同时与所有客户机对话)。该系统需要一个集中的服务器,从客户端应用程序中检索信息,然后与它们共享信息。这远比单个答案所能解释的要复杂得多,所以我相信您将不得不阅读更多关于构建服务器以及应用程序如何与服务器对话(例如通过REST API)的内容。

 类似资料:
  • 我知道以前有人问过这个问题,但那篇文章中的解决方案对我不起作用。 我刚刚开始学习Android编程,当时正在做一个模型。它可以在Android Studio中正确显示,但不能在我的设备上显示。图像和背景色显示正确,但没有文本显示。我试过改变字体和字体颜色。需要改变什么? 我有另一个使用RelativeLayout的示例,它显示正确,但这个ConstraintLayout不正确。 第一个图像来自AS

  • 我有一个活动,我想显示配对和未配对蓝牙设备的列表。我不想要一个只显示列表的按钮,但是列表是直接显示的。我遵循android指南https://github.com/googlesamples/android-bluetoothchat/blob/master/application/src/main/java/com/example/android/bluetoothchat/deviceList

  • 设置——我的Android应用程序在加载时调用REST API,从运行在Google app Engine上的服务器获取json提要。它解析这个json并填充一个包含ItemListBaseAdapter的列表。我正试图弄清楚它会从这里走向何方。 问题——当我通过USB在我的设备上构建和部署这个应用程序时,它像预期的那样工作。但是,当我从Playstore上传和下载这个应用程序时,我看到一个空白屏

  • 问题内容: 我一直在尝试并且无法在OSX系统的主显示屏上使用Java全屏模式。无论我尝试了什么,似乎都无法摆脱显示屏顶部的“苹果”菜单栏。我真的需要在整个屏幕上绘画。谁能告诉我如何摆脱菜单? 我已经附上了一个显示问题的示例类-在我的系统上,菜单仍然可见,我希望看到一个完全空白的屏幕。 问题答案: 我认为您的问题在这里: 块总是执行,所以这里发生的是,您的窗口在短时间内(如果有的话)变为全屏,然后立

  • 我需要在小设备上的模态/全屏面板中显示某些内容,由按钮触发。在大型设备上,相同的内容总是显示出来,然后触发器被隐藏起来。 您如何处理这一问题以实现可访问性? 当前,我有此设置 最初,通过CSS隐藏在小型设备上(在以小型设备为目标的媒体查询中)。当触发器命中时,我将设置为true,并向面板本身添加一个类,它通过CSS显示全屏。在大型设备上,我隐藏该按钮,并始终通过CSS(在针对大型设备的媒体查询中)

  • 在模拟器上,它运行良好。 然而,我试图将我的应用程序部署到我的iPhone设备上。屏幕是空白的,没有任何内容,震动设备没有显示任何开发者菜单。 这是我的回购计划。 https://github.com/poc7667/reacti-native-album-sandbox 如果我通过XCODE而不是“react native run ios”启动模拟器。 这是通过运行“反应本机log-ios”的异