1

这是我的第一篇文章,对不起标题和解释。对不起我的英语不好。

我用我需要的所有东西定义了一个 .xml。我有 10 个 ImageView,10 个 ImageView 的 id 是 myimage01、myimage02、...、myimage010。我需要为 ImageView 选择一个图像。我可以这样做:

String imageName=getImageName();      
  id = getResources().getIdentifier(imageName, "drawable", getPackageName());
  drawable = res.getDrawable(id);
  ImageView cant1= (ImageView)findViewById(R.id.myimage01);
  cant1.setImageDrawable(drawable);
  ImageView cant2= (ImageView)findViewById(R.id.myimage02);
  cant2.setImageDrawable(drawable);
  ImageView cant3= (ImageView)findViewById(R.id.myimage03);
  cant3.setImageDrawable(drawable);
  ImageView cant4= (ImageView)findViewById(R.id.myimage04);
  cant4.setImageDrawable(drawable); 
  ImageView cant5= (ImageView)findViewById(R.id.myimage05);
  cant5.setImageDrawable(drawable);
  ImageView cant6= (ImageView)findViewById(R.id.myimage06);
  cant6.setImageDrawable(drawable);
  ImageView cant7= (ImageView)findViewById(R.id.myimage07);
  cant7.setImageDrawable(drawable);
  ImageView cant8= (ImageView)findViewById(R.id.myimage08);
  cant8.setImageDrawable(drawable);
  ImageView cant9= (ImageView)findViewById(R.id.myimage09);
  cant9.setImageDrawable(drawable);
  ImageView cant10= (ImageView)findViewById(R.id.myimage010);
  cant10.setImageDrawable(drawable);

但这太糟糕了,最好使用循环。但我不知道这样做。

我需要这样的东西:

    String cad;
for(int i=0;i<10;i++){
      cad="myimage0";
      String cat= Integer.toString(i);
      cad=cad.concat(cat);
      ImageView cant1= (ImageView)findViewById(R.id.cad);
      cant1.setImageDrawable(drawable);
  }

但是有一个错误:

ImageView cant1= (ImageView)findViewById(R.id.***cad***);

谢谢大家

4

2 回答 2

6

您不能直接将这样的字符串传递给findViewById. 您需要先从您的字符串中查找资源。尝试这个:

int idResource = getResources().getIdentifier(cad, "id", getPackageName());
ImageView cant1= (ImageView)findViewById(idResource);
于 2012-09-10T16:47:48.193 回答
0

在循环中使用它:

getResources().getIdentifier(resName, "id", getPackageName());

resName 是该 ID 的确切字符串(在您的示例中,它是 myimage01、myimage02、...

所以我们有:

String cad;
for(int i=0;i<10;i++){
      cad="myimage0";
      String cat= Integer.toString(i);
      cad=cad.concat(cat);
      int id = getResources().getIdentifier(cad, "id", getPackageName());
      ImageView cant1= (ImageView)findViewById(id);
      cant1.setImageDrawable(drawable);
  }
于 2012-09-10T16:47:37.230 回答