如何在没有数组的情况下访问不同的“全局”元素(JAVA)

时间:2012-07-10 01:47:30

标签: java android

我目前正在进行Android开发。

R类(一个自动生成的类)有许多“全局”值,可以从任何地方访问:

R.drawable.<file_name_ignoring_suffix>

我有很多名为'item_0.png','item_1.png','item_2.png'等文件。

有没有一种简单的方法来迭代这些项目而不先将它们放入数组中?

我目前的实施:

int[] itemResources = { R.drawable.item_0, R.drawable.item_1, R.drawable.item_2,
                        R.drawable.item_3, R.drawable.item_4, R.drawable.item_5  };

...然后遍历数组。

这很好用,但它不是特别易于维护,而且当我有很多项目时会很费力。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您当然可以使用reflection来获取R.drawable的字段列表。这有点hacky,但它可能适合你。

答案 1 :(得分:1)

我认为,没有简单的方法可以做到这一点。这是我试图获得drawables的小代码。

    R.drawable d = new R.drawable();
    try {
        for (Field fld : declaredFields) {
            Integer id = fld.getInt(d);
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), id);
            if (bitmap != null)
                Log.d("tag", "success");
            else
                Log.d("tag", "failed");
        }
    } catch (Exception e) {
        Log.d("tag", "" + e);
    }

在上述测试中,其中一些失败了。我不知道原因,因为它需要进一步调查。但这会让你开始。

其次,如果你想使用android平台用于根据方向,语言环境等找到合适资源的规则选择正确的png,也要寻找this api from theme

答案 2 :(得分:0)

如何将它们放在同一目录中,然后自动查询目录内容并让它使用内容创建一个数组?