Android App的存储方法

时间:2013-01-05 02:54:02

标签: android storage

我正根据禁忌游戏为我的朋友和家人制作Android应用程序。基本上,游戏显示主要单词,然后是受限单词列表。目标是让你的队友说出主要的词,但你不能说任何受限制的词。

对于这个应用程序,我需要几百个主要单词,每个主要单词需要7个限制词。

我的问题是如何存储这些内容,以便应用程序随机访问它们。

我最初的想法是使用字符串数组的XML资源,但我不知道如何用随机生成器引用它们。

我愿意接受任何建议。我使用Android SDK在Eclipse中工作。

为了澄清,我在Java / C / C ++方面经验丰富,但这是我的第一个Android应用程序。我的游戏框架几乎已经完成,这是我唯一的主要问题。

感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

你可以随机使用你说的xml方法。像这样:

假设您有1个字符串数组,其中包含8个字(1个正确且7个限制),您可以拥有尽可能多的具有不同名称的数组。它们保存在string.xml

现在在java中创建Random并检查你得到的数字,然后如果你得到x number open x string-array。

以下是一个例子:

<string-array name="a">
    <item>A</item>
    <item>B</item>
    <item>C</item>
    <item>D</item>
    <item>E</item>
    <item>F</item>
    <item>G</item>
    <item>H</item>
</string-array>

现在在java中:

Random r = new Random();
int i1 = r.nextInt(max - min + 1) + min;

然后查看您的电话号码:

if (i1 == 0){
//do your magic code here with string-array a
} else ...

或使用您喜欢的任何方法,例如switch ...

编辑:或者一个技巧可以是将字符串数组的名称设为#(诅咒#是一个数字)然后执行:

array = getResources().getStringArray(R.array.a+i1);

使用此方法,您不需要if elseswitch或您想要使用的任何内容。

注意:此代码是我的想法,因此可能会有一些写入错误。

答案 1 :(得分:0)

您似乎有这样的数据模型:您有一个主要单词列表。每个主要单词对象包含单词本身,然后是相关限制单词列表。

这看起来像你可以使用JSON或XML(或者我认为是协议缓冲区)。我会选择JSON,因为它在速度和Android支持之间取得了平衡。您可以使用编辑器创建JSON文件,它们可以如下所示:

[{
    "name": "animal",
    "restricted": ["cat", "dog", "mouse"]
},{
    "name": "fruit",
    "restricted": ["kiwi", "apple", "orange"]
},
{
    "name": "city",
    "restricted": ["Paris", "London", "Madrid"]
}]

打开文件并将其转换为String后,您可以使用JSONArray(yourString)对其进行解析,然后使用相应的方法获取每个单词JSONObject,其名称String及其JSONArray限制词String s。

答案 2 :(得分:0)

我开发了一个测验应用程序(一个问题,多个选择5个答案),其中我将所有内容存储在SQLite数据库中。通过此实现,您还可以根据需要使用类别。你可以做的是得到有多少单词的计数,并将其作为整数arraylist包含0到多少。然后我拖拽列表,所以它是随机顺序。这样我就不会重复任何问题,不像使用随机可能的那样。如果您希望随机使用,则每次使用时都可以删除该单词。这种方式的好处还在于您不必引用每个字符串,字符串数组等 - 您可以每次向数据库添加更多单词,并且固定结构将自动处理它。