我在做应用程序,我需要在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);
}
答案 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);
希望这有帮助。