我需要动态访问xml中的资源。
res=getResources();
plc=res.obtainTypedArray(R.array.id1);
我想在循环中执行此操作=>将id1更改为id2,id3,...,id1000,并在该循环中使用相应数组的项目。我可以使用单个数组但不能跳转到另一个数组。有什么建议我怎么做? ObtainTypedArray仅将整数作为参数。
谢谢!
答案 0 :(得分:2)
这是我在代码中从XML调用TypedArray的问题的确切解决方案:
1)在XML create array中索引数据数组
<array name="arrind">
<item>@array/id1</item>
<item>@array/id2</item>
<item>@array/id3</item>
</array>
<string-array name="id1">
<item>...</item>
<item>....</item>
<item>...</item>
</string-array>
<string-array name="id2">
...
</string-array>
...
2)回忆代码中的数组
Resources res=getResources();
TypedArray index=res.obtainTypedArray(R.array.arrind); //call the index array
for (int i = 0; i < n; i++) {
int id=index.getResourceId(i,0); //get the index
if (id != 0){
String[] handle=new String[n];
handle=res.getStringArray(id); //use the index to get the actual array
String a=handle[0]; //Access items in your XML array
String b=handle[1];
c=...
}
}
感谢您提供所有有用的建议,请注意不要使用Field方法,但我相信在获得更多经验后我会到达那里!您可以使用2D数组更好地使用此解决方案,但我在代码中没有使用它...
答案 1 :(得分:1)
评论中的答案显示了您到底该怎么做。这是一个例子:
让我们假设你有一个名为的整数: id1,id2,id3,id4,...,id10你可以访问它们并将它们存储到一个数组中:
int array[] = {1,2,3,4,5,6,7,8,9,10};
int value[10];
for ( i=0; i<10; i++){
String fieldName = "id" + Integer.toString(array[i]);
Field field = R.id.class.getField(fieldName);
value[i] = field.getInt(null);
}