尝试使用ArrayList来保存图像资源

时间:2011-04-30 21:55:47

标签: android arraylist imageview

在我的应用程序中,我在drawable文件夹中有一堆图像,我随机选择并使用imageView显示。我被告知ArrayList可以添加/删除列表中的对象... 以防止图像重复,我在下面使用了一些示例代码:

// create an array list 
ArrayList imageHolder = new ArrayList(); 
int remaining = 10;

public void initArrayList(){
    // add elements to the array list 
    imageHolder.add((int)R.drawable.child0); 
    imageHolder.add((int)R.drawable.child1); 
    imageHolder.add((int)R.drawable.child2); 
    imageHolder.add((int)R.drawable.child3); 
    imageHolder.add((int)R.drawable.child4); 
    imageHolder.add((int)R.drawable.child5); 
    imageHolder.add((int)R.drawable.child6); 
    imageHolder.add((int)R.drawable.child7); 
    imageHolder.add((int)R.drawable.child8);
    imageHolder.add((int)R.drawable.child9); 
}

//get random number within the current range
int randInt = new Random().nextInt((remaining-1));

//update the imageView config    
ImageView image = (ImageView) findViewById(R.id.shuffleImageView);
image.setImageResource(imageHolder.get(randInt));

Eclipse报告image.setImageResource不能使用objectList提供的对象参数。实际参数应为int。任何线索如何解决这个问题?

提前致谢!

2 个答案:

答案 0 :(得分:1)

使用List<Integer> imageHolder = new ArrayList<Integer>();

答案 1 :(得分:0)

ArrayList包含Objects,始终不是基本类型。当您将int设置为Integer时,它们会被自动装箱到image.setImageResource((int)imageHolder.get(randInt)); 个对象,当您将它们取回时,您也会获得整数对象。一个简短的解决方案是:

ArrayList

但要小心,取消装入空指针会导致NullPointerException,所以请确保你的randInt在arraylist的范围内。

编辑:

我完全错过了,但你初始化你的ArrayList imageHolder = new ArrayList();

List<Integer> imageHolder = new ArrayList<Integer>(); 

创建对象的ArrayList。相反,初始化ArrayList,如下所示,以创建整数的ArrayList:

{{1}}