0

我有以下数组:

final String[][] dataArr = {
        {"R.drawable.bengaltiger", "bengaltiger"},
        {"R.drawable.cat", "cat"},
        {"R.drawable.chimp", "chimp"},
        {"R.drawable.eagle", "eagle"},
        {"R.drawable.frog", "frog"},
        {"R.drawable.lamb", "lamb"},
        {"R.drawable.wolf", "wolf"},
};

从这个我试图播放声音并使用图像作为按钮的背景:

final Button guessRight = (Button) findViewById(R.id.butRight);
guessRight.setBackgroundResource(R.drawable.bengaltiger);

无法使用 uri 在数组中的图像设置背景图像,因为函数“setBackgroundResource”需要一个 int 或一个我有字符串的 URI。

我的问题是如何将字符串转换为 URI,以便我可以在“setBackgroundResource”函数中使用数组中的路径?

我的方法正确吗?或者我应该使用另一种方式来存储我的数据或以不同的方式处理它?

谢谢你。

4

1 回答 1

3

这里有很多问题。

  1. 您似乎想使用字符串来保存每个 ID 的符号名称。你自己指出这行不通。
  2. 您将这些存储在二维字符串数组中,这是错误的数据结构。

相反,您需要将这些存储在Map中。

Map<Integer, String> imageMap = new HashMap<Integer, String>
// Put the other ones here.
imageMap.put(R.drawable.bengalTiger, "bengaltiger");
.
.
.

// Later on, use them like this:
for(Integer id : imageMap.keyset()) {
  String name = imageMap.get(id);
  // You can now use "id" and "name" in whatever UI elements you want.
}

此外,如果您在列表中存储任意数量的 ID 和名称,那么为什么要让视图将它们从布局中放入?您似乎希望以编程方式创建它们,否则为什么不一开始就在 XML 布局中进行设置呢?

于 2013-04-05T22:43:17.280 回答