从其他变量值中创建变量名

时间:2011-11-15 11:40:40

标签: java android

基本上我正在尝试自动化

的过程
mDrawable[0] = this.getResources().getDrawable(R.drawable.img0);
mDrawable[1] = this.getResources().getDrawable(R.drawable.img1);
mDrawable[2] = this.getResources().getDrawable(R.drawable.img2);
mDrawable[3] = this.getResources().getDrawable(R.drawable.img3);
mDrawable[4] = this.getResources().getDrawable(R.drawable.img4);

等。

循环:

for(int i = 0;i<=15;i++)
{       
mDrawable[i] = this.getResources().getDrawable(R.drawable.**img+i**);       
}

那么如何从 i 循环变量

组成这个资源名称 img4

谢谢!

4 个答案:

答案 0 :(得分:3)

我确信你想要实现this这样的例子。

当你想在循环中实现findViewById()时有很多帮助,因为有许多视图只有像“counter”varialbe 1,2,3,4,5等那样的差异。

for(int i=0; i<15; i++) 
{
    String imageID = "img" + (i);
    int resID = getResources().getIdentifier(imageID, "drawable", getPackageName());

  /* if you want to reference any widgets like Button, TextView, ImageView, etc. then write below code:

    //int resID = getResources().getIdentifier(imageID, "id", getPackageName());   
  */
}

答案 1 :(得分:2)

您可以使用Resources.getIdentifier()

我头顶的小片段:

for(int i = 0;i<=15;i++)
{   
    int id = this.getResources().getIdentifier("img"+i, "drawable", getPackageName());
    mDrawable[i] = this.getResources().getDrawable(id);       
}

答案 2 :(得分:0)

反射。但是,考虑到进行反射的开销,我建议坚持使用上面的代码,除非你有超过4个元素。

Post

Reflection

答案 3 :(得分:0)

为了避免使用Resource.getIndentifier()(不建议使用它),您可以生成一组id并迭代它们

int ids[] = { R.drawable.img0, R.drawable.img1, R.drawable.differentnames, R.drawable.whatever /*etc*/ };
mDrawables = new Drawable[ids.length];
for(int i = 0, s = ids.length; i < s; i++)
{       
    mDrawables[i] = this.getResources().getDrawable(ids[i]);       
}