FindViewById 循环

Posted

技术标签:

【中文标题】FindViewById 循环【英文标题】:FindViewById Loop 【发布时间】:2012-05-16 20:54:47 【问题描述】:

我想尝试将其放入一个循环中,但我似乎无法使 R.id.imageView 匹配。我试过:string id = "R.id.imageView"+i 在 for 循环中,但它与 findViewById 的参数不匹配。有任何想法吗?非常感谢任何帮助。

   buttons[0] = (ImageView) this.findViewById(R.id.imageView1);
   buttons[1] = (ImageView) this.findViewById(R.id.imageView2);
   buttons[2] = (ImageView) this.findViewById(R.id.imageView3);
   buttons[3] = (ImageView) this.findViewById(R.id.imageView4);
   buttons[4] = (ImageView) this.findViewById(R.id.imageView5);
   buttons[5] = (ImageView) this.findViewById(R.id.imageView6);
   buttons[6] = (ImageView) this.findViewById(R.id.imageView7);
   buttons[7] = (ImageView) this.findViewById(R.id.imageView8);
   buttons[8] = (ImageView) this.findViewById(R.id.imageView9);
   buttons[9] = (ImageView) this.findViewById(R.id.imageView10);
   buttons[10] = (ImageView) this.findViewById(R.id.imageView11);
   buttons[11] = (ImageView) this.findViewById(R.id.imageView12);

【问题讨论】:

【参考方案1】:

为 R.id.imageView1......12 取一个整数数组并传递它的值 喜欢

private Integer[] Imgid = R.id.imageview1,....,12  ;

并使用数组

【讨论】:

【参考方案2】:

使用getIdentifier() 方法:

Resources res = getResources(); //if you are in an activity
for (int i = 1; i < 13; i++) 
   String idName = "imageView" + i;
   buttons[i] = (ImageView) findViewById(res.getIdentifier(idName, "id, getPackageName()));

【讨论】:

【参考方案3】:

与上面相同,只是错字已修复。似乎比“最佳答案”更好,因为如果您不需要它,您不必定义任何数组。

Resources res = getResources(); //if you are in an activity
for (int i = 1; i < 13; i++) 
  String idName = "imageView" + i;
  imageViews[i] = (ImageView) findViewById(res.getIdentifier(idName, "id", getPackageName()));

【讨论】:

以上是关于FindViewById 循环的主要内容,如果未能解决你的问题,请参考以下文章

吐司一直循环

循环遍历 GroupView 的所有子项?

Android java.lang.NoSuchFieldError: No static field xxx of type I in class Lcom/XX/R$id; or its supe

如何在循环内声明一个新变量而不是错误?

Android从findViewById创建一个新对象与铸造一个findViewById

如何循环遍历列表视图并从每一行的文本视图中获取文本