如何在android中将随机整数数组添加到gridview中

时间:2012-03-19 13:12:22

标签: android android-layout

我在做应用程序,我需要在gridview中显示一些图像。我需要随机地在gridview中显示图像。所以我在这里采用了一个像mThumbIds[]这样的整数数组,我添加了所有图像,然后我采用类似solutionList的arraylistl,然后是mThumbIds [] intrgerarray。

我添加到solutionList数组中。然后我将随机函数应用于该解决方案列表然后再添加解决方案列表数组到一个整数数组,如“randomNumbers []”然后最后我将randomNumbers []数组添加到gridview我得到随机图像但是我的探索是在gridview重复图像来了,但我不想要重复的图像。在mThumbIds []我没有给出被渲染的图像。请任何人建议我。

     ImageAdapter .class:
          public class ImageAdapter extends BaseAdapter {
         private Context mContext;

public ImageAdapter(Context c) {

    // TODO Auto-generated constructor stub
    mContext = c;
}

public int getCount() {
    // TODO Auto-generated method stub
    return mThumbIds.length;
}

public Object getItem(int position) {
    // TODO Auto-generated method stub
    return null;
}

public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
}

public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;
int unique=0;
    if (convertView == null) { // if it's not recycled, initialize some attributes
        imageView = new ImageView(mContext);
        imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setPadding(8, 8, 8, 8);
    } else {
        imageView = (ImageView) convertView;
    }
      Collections.shuffle(solutionList);
      Integer[] randomNumbers=(Integer[])solutionList.toArray();
    imageView.setImageResource(randomNumbers[unique]);
    unique++;
    return imageView;
}
private Integer[] mThumbIds={R.drawable.a,R.drawable.bb,R.drawable.cc,R.drawable.dd,R.drawable.ee,R.drawable.ff,R.drawable.galley,R.drawable.gg};
  List<Integer> solutionList = Arrays.asList( mThumbIds);

}

1 个答案:

答案 0 :(得分:0)

此处的解决方案是存储已在特殊ArrayList中使用的项目的索引。而且我建议你每次使用java.util.Random类而不是改组数组。代码如下所示:

ArrayList<Integer> usedIndexes = new ArrayList<Integer>();
        int index;
        do {
            index = new Random().nextInt(mThumbIds.length);
        } while (usedIndexes.contains(index));
            imageView.setImageResource(randomNumbers[index]);
        usedIndexes.add(index);

希望这有帮助。