Android GridView中的随机图像

Android GridView中的随机图像,android,Android,我想知道GridView中是否存在随机图像 下面的代码对我来说运行得很好,但它在启动活动时不会随机出现在GridView中 我应该如何修改下面的代码以使其随机 布局: <GridView android:id="@+id/fruit_gridview" android:layout_width="wrap_content" android:layout_height="fill_parent" android:columnW

我想知道GridView中是否存在随机图像

下面的代码对我来说运行得很好,但它在启动活动时不会随机出现在GridView中

我应该如何修改下面的代码以使其随机

布局:

<GridView
        android:id="@+id/fruit_gridview"
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent"
        android:columnWidth="90dp"
        android:numColumns="auto_fit"
        android:verticalSpacing="5dp"
        android:horizontalSpacing="10dp"
        android:stretchMode="columnWidth"
        android:gravity="center"
        android:smoothScrollbar="true" />
</RelativeLayout>
GridView活动:

GridView gridview = (GridView) findViewById(R.id.fruit_gridview);
    gridview.setAdapter(new ImageAdapter_Fruit_24(this));

    final ImageAdapter_Fruit_24 imageAdapter = new ImageAdapter_Fruit_24(this);

谢谢你

在显示或提供给适配器之前,请尝试以下代码

// Fisher–Yates shuffle
static void shuffleArray(Integer[] intArr) {
    Random rnd = new Random();
    for (int i = intArr.length - 1; i >= 0; i--) {
        int index = rnd.nextInt(i + 1);
        // Simple swap
        int temp = intArr[index];
        intArr[index] = intArr[i];
        intArr[i] = temp;
    }
}
您还可以将其转换为
阵列列表
列表
Collections
有自己的方法
shuffle

List list = Arrays.asList( solutionArray );
Collections.shuffle(list);
编辑

Integer[]
转换为
ArrayList

ArrayList<Integer> arrList = new ArrayList<Integer>();
for(int i = 1 ; i < intArr.length ; i++)
{
    arrList.add(intArr[i]);
}
Collections.shuffle(arrList);
输出如下所示。(不要与输出进行比较。资源ID可能不同)

06-19 12:49:53.489:INFO/Home(2627):2130837504
06-19 12:49:53.489:INFO/Home(2627):2130837505
06-19 12:49:53.489:INFO/Home(2627):2130837508
06-19 12:49:53.489:INFO/Home(2627):2130837507
06-19 12:49:53.489:INFO/Home(2627):2130837506
06-19 12:49:53.489:INFO/Home(2627):2130837509
06-19 12:49:53.489:INFO/Home(2627):2130837510
06-19 12:49:53.489:INFO/Home(2627):2130837511

现在,我将这个
Integer[]
转换为
ArrayList

在您的
getView()


你的问题解决了吗?不,还是解决不了。好的。是否可以将
Integer[]
替换为
ArrayList
?两者具有相同的功能。如果你想的话,我有其他的解决办法。通过使用数组,您可以通过其
get(position)
方法获取任何值。
ArrayList<Integer> arrList = new ArrayList<Integer>();
for(int i = 1 ; i < intArr.length ; i++)
{
    arrList.add(intArr[i]);
}
Collections.shuffle(arrList);
Log.d("Home","Before Shuffle");
    for(int i=0;i< mThumbIds.length;i++){
        Log.i("Home",""+mThumbIds[i]);
}
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0;i< mThumbIds.length;i++){
    list.add(mThumbIds[i]);
}
Collections.shuffle(list);
for(int i=0;i< list.size();i++){
    Log.i("Home",""+list.get(i));
}
GridView gridview = (GridView) findViewById(R.id.fruit_gridview);
//do shuffle of list. make sure you have write above code before this
Collections.shuffle(list);
ImageAdapter_Fruit_24 imageAdapter = new ImageAdapter_Fruit_24(this);
gridview.setAdapter(imageAdapter);
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;
    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;
    }
    //here changes will be done
    imageView.setImageResource(list.get(position));
    return imageView;
}