【问题标题】:Android - Access xml resources dynamicallyAndroid - 动态访问 xml 资源
【发布时间】:2012-02-29 00:11:22
【问题描述】:

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

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

我想在循环中执行此操作 => 将 id1 更改为 id2、id3、...、id1000 并在该循环中使用相应数组的项目。我可以用单个数组来做,但不能跳到另一个数组。有什么建议我该怎么做? ObtainTypedArray 只需要整数作为参数。

谢谢!

【问题讨论】:

  • 这应该可以帮助你stackoverflow.com/q/5406108/839527
  • 谢谢你,JProgrammer。我已经阅读了您多次建议的帖子,但看不出它对我有什么用处。我刚开始接触java,之前用过无数种其他语言。你能为可怜的小我多加一点智慧吗? ;-) 提前谢谢你

标签: java android xml


【解决方案1】:

这是我在代码中从 XML 调用 TypedArray 问题的确切解决方案:

1) 在 XML 中创建索引数据数组的数组

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

        }
    }

感谢您提供的所有有用建议,决定不使用现场方法,但​​我相信在获得更多经验后我会到达那里!您可以使用 2D 数组使这个解决方案变得更好,但我的代码中没有使用它...

【讨论】:

  • 它有点令人费解且难以阅读,但如果它有效,它就可以工作
【解决方案2】:

评论中的答案向您展示了如何做到这一点。这是一个例子:

假设你有整数命名: 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);
}

【讨论】:

猜你喜欢
  • 2012-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多