带有ImageViews的Android填充数组

时间:2011-12-05 00:06:02

标签: android listview imageview drawable android-arrayadapter

我想要一组图像视图,但我不知道如何使用imageview类型的对象填充它。

 ImageView[] forAdapter = new ImageView[imageIds.size()];
 for(int i = 0; i < imageIds.size(); i++)
 {
                    ImageView mImageView = new ImageView(context);
                    forAdapter[i] = mImageView.setImageDrawable(((imagesPulled.get(imageIds.get(i)))));
}

这不起作用,因为.setImageDrawable没有返回imageview,我也不知道实际上有任何对象!

我考虑在数组中使用drawables,但我最终为listview设置了一个arrayadapter,我不能使用drawables创建一个R.layout(因为xml文件正在使用ImageView,所以我会得到一个类转换异常不可绘制的类型),所以我只有ImageViews放入一个数组 - 除非我接近问题的错误。

2 个答案:

答案 0 :(得分:6)

你的代码几乎就在那里!我将在下面进行一些小改动并发表评论:

 ImageView[] forAdapter = new ImageView[imageIds.size()];
 for(int i = 0; i < imageIds.size(); i++)
 {
                    forAdapter[i] = new ImageView(context);
                    forAdapter[i].setImageDrawable(imagesPulled.get(imageIds.get(i)));
}

首先:如果要初始化forAdapter [i],则无需创建新变量并将其分配给它。就在那里:

forAdapter[i] = new ImageView(context);

设置图像(使用setImageDrawable,setImageResource等)不会返回任何内容。这是对图像本身的操作,所以你要做的就是从你想要修改的变量中调用方法:

forAdapter[i].setImageDrawable(imagesPulled.get(imageIds.get(i)));

你做完了:) 如果您有任何疑问,请在评论中提出。

希望它有所帮助。

答案 1 :(得分:2)

您的mImageView是ImageView本身。

因此,forAdapter [i] = mImageView应该可以正常工作。如果您使用其他操作,则可以在分配之前执行这些操作。