我的问题是这个。 我的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[];
这就是我宣布数组的方式。
答案 0 :(得分:1)
我知道你说一切都很好,但只是一个建议。如果您现在花时间熟悉这个模型,这将对您有所帮助。您应该知道多个图像视图比复合图像视图更昂贵。如果您希望显示一系列图像,我建议您使用专为此设计的实现,即;想到了Gallery,GridView或ListView。
答案 1 :(得分:0)
您的imageView
是否定义如下(检查括号)。这是我的一个应用程序的定义,并且确定无误。
ImageView mCnName[]= new ImageView[NUMBER_OF_IMAGE];
这种方式基本上没有错,但如果所有ImageView
都应具有相似或相同的属性,那么我会使用一点点差异化的方法。默认情况下,您可以使用蓝色背景的所有图像视图。就像你一样,你必须在layout.xml
文件中为每个属性提供属性,否则你必须运行一个循环才能以编程方式更改每个ImageView
的bg颜色。
在我的几乎所有应用程序中,我都喜欢这样的方法。 使用xml文件中的所有属性定义ImageView。
layoutinflater
并使用mLayOutInflater=this.getLayoutInflater();
mCnName[i]=mLayOutInflater.inflate(R.layout.yourImageView, null);
parentLayout.addView(mCnName[i],null);
添加膨胀的视图
像这样,以后更容易设计和更改布局。但正如我所说,使用我的方法并非绝对必要。你的工作可以。
答案 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
:
注意:不鼓励使用此功能。按标识符检索资源比按名称检索资源要高效得多。