我正在尝试向列表添加一堆可绘制引用,我需要更改drawable引用中的数字,因为每个引用不同的项目。我尝试如下:
for(int x=69;x<222;x++){
urls.add(x,Integer.parseInt("R.drawable.item"+(x+1)+"_lock");
}
并在运行时产生NumberFormatException
错误:java.lang.NumberFormatException: Invalid int: "R.drawable.item70_lock"
这是我正在尝试做什么的正确方法还是有不同的方式?
答案 0 :(得分:1)
动态获取资源ID:
for(int x=69;x<222;x++){
int id = getResources().getIdentifier("item" + (x+1) + "_lock", "drawable", getPackageName());
if(id != 0)
urls.add(x, id);
}
答案 1 :(得分:0)
这不是Android资源的工作方式:)
首先,资源指针实际上是一个常量int,而不是String
。 R.drawable.item_1_lock
是自动生成的类R
中的字段。
其次,Integer.parseInt()
用于将类似数字的String更改为实际数字基本类型。因此,如果你使用String
param&#34; 1&#34;来调用它,你得到的是一个值为1的int。
这里的问题是你传递的String
不是数字。它不能变成数字,因此抛出异常。
最后,您无法在运行时生成资源指针。它们是自动生成的并且易于更改,因此您不应该像上面那样生成它们。创建一个int[]
,将可能的资源放入其中并使用您迭代的x
获取它: - )