2012-02-29 62 views
1

我需要动态访问xml中的资源。Android - 动态访问xml资源

res=getResources(); 
plc=res.obtainTypedArray(R.array.id1); 

我愿做一个循环=>变化ID1到ID2,ID3,...,ID1000和与各阵列项循环工作。我可以用单个数组来完成,但不能跳转到另一个数组。任何建议我怎么能做到这一点? ObtainTypedArray仅将整数作为参数。

谢谢!

+2

这应该可以帮助你http://stackoverflow.com/q/5406108/839527 – JProgrammer 2012-02-29 00:22:07

+0

谢谢你,JProgrammer。我已阅读过多次提出的帖子,但无法看到它对我有何用处。我刚刚开始使用java,之前我已经使用了许多其他语言。你能否多加一点你对贫穷小我的智慧? ;-)提前谢谢 – Whitewall 2012-02-29 00:49:55

回答

2

下面是我的从XML调用TypedArray在代码的问题的精确解:在XML

1)创建数组索引数据数组

<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)调出一个在代码rray

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=... 

     } 
    } 

感谢您的所有有用的意见,Idecided不使用外地的做法,但我相信,我会到那里后,我获得更多的经验!你可以使这个解决方案更好地使用二维数组,但我没有用它在我的代码中...

+0

它有点复杂,难以阅读,但如果它的工作原理,它的工作原理 – slayton 2012-02-29 15:19:05

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); 
} 
+0

谢谢,辉煌!我也发现这个帖子非常有用:http://stackoverflow.com/questions/4326037/android-resource-array-of-arrays ... – Whitewall 2012-02-29 12:23:59