使用变量来定义资源

时间:2017-05-17 10:43:24

标签: java android

我想显示5个随机骰子,6个品种。

我有代码,在1到6之间生成5个随机整数,我有5个骰子的ImageViews。他们将ID设置为:d6_image_view_1,d6_image_view_2等。在drawable文件夹中,我有d1.jpg,d2.jpg等。所以如果我想将第二张图片更改为4,我会这样做:

ImageView d6ImageView2 = (ImageView) findViewById(R.id.d6_image_view_2);
d6ImageView2.setImageResource(R.drawable.d4);

如果我有ImageView的数字和变量中的drawable怎么办?
我是否需要进行长而复杂的嵌套设置以获得正确的输出?或者我可以以某种方式将这些数字放入代码中吗?显然这不起作用:

int image = 2;
int picture = 4;
ImageView d6ImageView(image) = (ImageView) findViewById(R.id.d6_image_view_(image));
d6ImageView(image).setImageResource(R.drawable.d(picture));

1 个答案:

答案 0 :(得分:0)

Java中没有动态变量。必须在源代码中声明Java变量。因此,解决方案可以是为可绘制资源和视图id

创建两个整数数组

例如

int[] resourceIds = new int[] { R.drawable.d1, R.drawable.d2, R.drawable.d3, R.drawable.d4, R.drawable.d5, R.drawable.d6 }

int[] viewIds = new int[] { R.id.d6_image_view_1, R.id.d6_image_view_2, R.id.d6_image_view_3, R.id.d6_image_view_4, R.id.d6_image_view_5, R.id.d6_image_view_6 }

然后你可以做

int image = 2;
int picture = 4;
ImageView imgView = (ImageView) findViewById(viewIds[image]);
imgView.setImageResource(resourceIds[picture]);