设置一个ImageView数组(Android)

时间:2012-01-07 13:58:13

标签: android arrays imageview

我的问题是这个。 我的XML布局中有许多ImageView对象。我希望能够将图像放在一些“if's”和“else's”(可以这么说)上。所以我想我会将所有这些对象分配到一个数组中。但应用程序不会启动。我是这样做的:

private void setImageView(){
    images = new ImageView[imagesNR];
    images[0] = (ImageView) findViewById(R.id.imageView1);
    images[1] = (ImageView) findViewById(R.id.imageView2);
    images[2] = (ImageView) findViewById(R.id.ImageView01);
    images[3] = (ImageView) findViewById(R.id.ImageView02);
    images[4] = (ImageView) findViewById(R.id.ImageView03);
    images[5] = (ImageView) findViewById(R.id.ImageView04);
    images[6] = (ImageView) findViewById(R.id.ImageView05);
    images[7] = (ImageView) findViewById(R.id.ImageView06);
    images[8] = (ImageView) findViewById(R.id.ImageView07);
    images[9] = (ImageView) findViewById(R.id.ImageView08);
    images[10] = (ImageView) findViewById(R.id.ImageView09);
    images[11] = (ImageView) findViewById(R.id.ImageView10);
}

我意识到这不是最原始的方式,但是因为我是新手,所以我想出的就是这样。 我很害怕我不能过多地告诉你这个错误。该应用程序正被强制关闭,就是这样。

有没有其他方法可以拥有一个ImageView数组并相应地操作它们?... 我想将对象放入RelativeLayout并设置放置所有ImageViews等的位置。

编辑:

private ImageView images[];

这就是我宣布数组的方式。

3 个答案:

答案 0 :(得分:1)

我知道你说一切都很好,但只是一个建议。如果您现在花时间熟悉这个模型,这将对您有所帮助。您应该知道多个图像视图比复合图像视图更昂贵。如果您希望显示一系列图像,我建议您使用专为此设计的实现,即;想到了Gallery,GridView或ListView。

答案 1 :(得分:0)

您的imageView是否定义如下(检查括号)。这是我的一个应用程序的定义,并且确定无误。

ImageView mCnName[]= new ImageView[NUMBER_OF_IMAGE];

这种方式基本上没有错,但如果所有ImageView都应具有相似或相同的属性,那么我会使用一点点差异化的方法。默认情况下,您可以使用蓝色背景的所有图像视图。就像你一样,你必须在layout.xml文件中为每个属性提供属性,否则你必须运行一个循环才能以编程方式更改每个ImageView的bg颜色。

在我的几乎所有应用程序中,我都喜欢这样的方法。 使用xml文件中的所有属性定义ImageView。

  1. 定义layoutinflater并使用mLayOutInflater=this.getLayoutInflater();
  2. mCnName[i]=mLayOutInflater.inflate(R.layout.yourImageView, null);
  3. 使用parentLayout.addView(mCnName[i],null);添加膨胀的视图 像这样,以后更容易设计和更改布局。
  4. 但正如我所说,使用我的方法并非绝对必要。你的工作可以。

答案 2 :(得分:0)

1

    for (int i = 0; i < container.getChildCount(); i++) {
        images[i] = (ImageView) container.getChildAt(i);
    }

2

for (int i = 0; i < 10; i++) {
        int id = getResources().getIdentifier("R.id.imageView" + i, "id", null);
        images[i] = (ImageView) getActivity().findViewById(id);
}

根据getIdentifier

的文档,第二个是非常昂贵的
  

注意:不鼓励使用此功能。按标识符检索资源比按名称检索资源要高效得多。