我有以下数组:
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>
谢谢。
答案 0 :(得分: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布局中首先设置它呢?