在android XML资源文件中存储字符串并引用它们

时间:2012-09-20 17:07:52

标签: android xml

我想知道我是否应该使用资源XML文件来存储所有可能的配方,而不是使用硬编码的ArrayList,问题是我不知道如何使用资源文件调用我的方法......

以下是我想要的简化版本:

int recipeNumber = b.getInt("RECIPE"); //This is taken from another activity

    final TextView rowTextView = new TextView(this); //Create a textview

    rowTextView.setText(R.string.recipeNumber); //This is what i am struggling with  

    howToLinearLayout.addView(rowTextView); //Add textview to linearlayout

我不知道在引用我的资源文件的部分中放入什么。我知道我需要: rowTextView.setText(R。但我不确定之后会发生什么。

我存储的字符串例如:

<string name="1">One part Vodka, One part Coke</string>
<string name="2">One part Vodka, One part Lemonade</string>

此列表会很长,所以我很欣赏任何其他有关存储的建议,请记住,我对此很陌生。

recipeNumber int是将在textview中调用的字符串。

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

要在代码中获取字符串资源,请使用getResources()。

rowTextView.setText(getResources().getString(R.string.recipeNumber));

要获取未知资源标识符,但使用已知资源名称,可以使用以下方法。

int identifier = getResources().getIdentifier("" + recipeNumber, "string", "com.your.package.name");
rowTextView.setText(getResources().getString(identifier));

答案 1 :(得分:0)

我建议将值存储在代码之外,例如XML或JSON(更快更容易使用)。我会选择JSON。非常容易将列表加载到数组或其他集合中,并且无论如何都可以使用它。

http://www.vogella.com/articles/AndroidJSON/article.html

然后您可以维护您的食谱,添加新食谱,维护食谱等,而无需触摸代码。只需替换XML或JSON(或您选择的任何内容)并重建您的应用程序。

Strings.xml适用于您可能希望本地化的UI和代码中的文本片段,以避免硬编码字符串。它并不是真正用于存储数据。