【问题标题】:Using a variable to define a resource使用变量定义资源
【发布时间】:2017-05-17 10:43:24
【问题描述】:

我想显示 5 个随机骰子,有 6 个面。

我有生成 5 个介于 1 和 6 之间的随机整数的代码,并且我有 5 个骰子的 ImageView。它们的 id 设置为:d6_image_view_1、d6_image_view_2 等。在可绘制文件夹中,我有 d1.jpg、d2.jpg 等。所以如果我想将第二张图片更改为 4,我会这样做:

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

如果我在变量中有 ImageView 和 drawable 的数字怎么办?
我是否必须进行冗长、复杂的嵌套 if 设置才能获得正确的输出?或者我可以以某种方式将这些数字直接放入代码中吗?显然这是行不通的:

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

【问题讨论】:

    标签: java android


    【解决方案1】:

    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]);
    

    【讨论】:

      猜你喜欢
      • 2021-10-12
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多