Android:从ArrayList设置资源字符串ID?

时间:2011-02-02 04:05:21

标签: java android string resources

我确信有一个更好的方法可以做到这一点,但我对编程完全不熟悉,所以我提前为我的高通道歉。

这是我的问题:

我在strings.xml中填充了我的字符串的名称参数的ArrayList,我正在尝试使用从我的数组的一部分动态创建的资源ID填充带有.setText()的TextView 。例如......

ArrayList<String> options = new ArrayList<String>();
options.add("bacon");
options.add("ham");

//R.id.option1 is in my layout and R.string.bacon is in my strings.xml
TextView option1 = (TextView)findViewById(R.id.option1);
option1.setText(R.string.(options.get(0)));

这显然不是我的完整代码。这只是一个面临同样问题的例子。

有什么想法吗?

提前致谢!

2 个答案:

答案 0 :(得分:2)

作为一个想法,您可以拥有一个资源ID的int数组,而不是名称的String数组:

ArrayList<Integer> options = new ArrayList<Integer>();
options.add(R.string.bacon);
options.add(R.string.ham);

//R.id.option1 is in my layout and R.string.bacon is in my strings.xml
TextView option1 = (TextView)findViewById(R.id.option1);
option1.setText(options.get(0));

答案 1 :(得分:0)

听起来你想要按名称查找资源id,这样你就可以在期望整数id的调用中使用它(例如在findViewById()中):

Resources.getIdentifier()

public int getIdentifier (String name, String defType, String defPackage)
Since: API Level 1
  

返回给定资源名称的资源标识符。完全限定的资源名称的格式为“package:type / entry”。前两个组件(包和类型)是可选的,如果在此指定defType和defPackage。   注意:不鼓励使用此功能。按标识符检索资源比按名称检索资源要高效得多。

示例:

String name = "bacon";
int id = resources.getIdentifier(name, "string", "com.package");
if (id == 0) {
    Log.e(TAG, "Lookup id for resource '"+name+"' failed";
    // graceful error handling code here
}

String fullyQualifiedResourceName = "com.package:string/bacon";
int id = resources.getIdentifier(title, null, null);
if (id == 0) {
    Log.e(TAG, "Lookup id for resource '"+fullyQualifiedResourceName+"' failed";
    // graceful error handling code here
}