Android - 如何设置背景图像哪个路径在数组中

时间:2013-04-05 22:34:21

标签: java android arrays

我有以下数组:

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”功能中使用来自阵列的路径?

我的方法是否正确?或者我应该使用其他方式来存储我的数据或以不同的方式处理它?<​​/ p>

谢谢。

1 个答案:

答案 0 :(得分:3)

这里有很多问题。

  1. 您似乎想使用String来保存每个ID的符号名称。你自己指出这不起作用。
  2. 您将这些存储在二维字符串数组中,这是一种错误的数据结构。
  3. 相反,您需要将它们存储在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布局中首先设置它呢?