在GridView中随机图像 [英] Random image in GridView

查看:109
本文介绍了在GridView中随机图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我难怪有反正在GridView中随机图像

I was wonder there is anyway to random image in GridView

在code波纹管是工作很适合我,但它并没有随机图像中的GridView时开始活动。

The code bellow is working well for me but it's doesn't random image in GridView when start activity.

我应该怎么修改code波纹管,使之乱?

What should I modify code bellow to make it random?

布局:

<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>

图片适配器:

Image Adapter:

// 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;
    }

    imageView.setImageResource(mThumbIds[position]);
    return imageView;
}

// references to our images
public Integer[] mThumbIds = {
        R.drawable.apple, R.drawable.apricot,
        R.drawable.banana, R.drawable.bell,
        R.drawable.blueberries, R.drawable.broccoli,
        R.drawable.carrot, R.drawable.celery,
        R.drawable.cherry, R.drawable.chili,
        R.drawable.coconut, R.drawable.dragon_fruit,
        R.drawable.durian, R.drawable.eggplant,
        R.drawable.erdnuss, R.drawable.grape,
        R.drawable.guava, R.drawable.kiwi,
        R.drawable.lettuce, R.drawable.lychee,
        R.drawable.mango, R.drawable.mangosteen,
        R.drawable.passion, R.drawable.mengkudu,
        R.drawable.mushroom, R.drawable.onion,
        R.drawable.orange, R.drawable.pear,
        R.drawable.pineapple, R.drawable.pomegranate,
        R.drawable.potato, R.drawable.pumpkin,
        R.drawable.radish, R.drawable.strawberry,
        R.drawable.tomato, R.drawable.watermelon
};

GridView的活动:

GridView Activity:

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);

谢谢你!

推荐答案

请尝试以下展示或给予适配器之前,code。

Try following code before displaying or giving to Adapter.

// 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;
    }
}

您也可以将其转换为 ArraryList&LT;整数GT; 列表集合都有自己的方法洗牌

You can also convert it to ArraryList<Integer> or List. Collections has its own method shuffle.

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

修改

转换整数[] 的ArrayList

ArrayList<Integer> arrList = new ArrayList<Integer>();
for(int i = 1 ; i < intArr.length ; i++)
{
    arrList.add(intArr[i]);
}
Collections.shuffle(arrList);

要使用 arrList ,使用 arrList.get(位置)方法。

示例

我把所有的整数数组像你。我有我的方式实现。

I have all the Integer array like yours. I have implemented on my way.

Log.d("Home","Before Shuffle");
    for(int i=0;i< mThumbIds.length;i++){
        Log.i("Home",""+mThumbIds[i]);
}

输出会像下面。 (不要与你的输出比较。资源ID可以不同)

output will be like following. (Don't compare with your output. Resource ids may different)

十二月6日至19日:49:53.489:INFO /家庭(2627):2130837504
  十二月6号至19号:49:53.489:INFO /家庭(2627):2130837505
  十二月6号至19号:49:53.489:INFO /家庭(2627):2130837508
  十二月6号至19号:49:53.489:INFO /家庭(2627):2130837507
  十二月6号至19号:49:53.489:INFO /家庭(2627):2130837506
  十二月6号至19号:49:53.489:INFO /家庭(2627):2130837509
  十二月6号至19号:49:53.489:INFO /家庭(2627):2130837510
  十二月6号至19号:49:53.489:INFO /家庭(2627):2130837511

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

现在,我转换这个整数[] 的ArrayList&LT;整数GT;

ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0;i< mThumbIds.length;i++){
    list.add(mThumbIds[i]);
}

现在,随机播放列表和打印。

Now, Shuffle list and print.

Collections.shuffle(list);
for(int i=0;i< list.size();i++){
    Log.i("Home",""+list.get(i));
}

输出。 (您运行code每一次,输出会有所不同,因此不会与previous一一比较。)

Output. (Every time you run your code, output will be different. So don't compare with previous one.)

十二月6日至19日:49:53.489:INFO /家庭(2627):2130837511
  十二月6号至19号:49:53.489:INFO /家庭(2627):2130837504
  十二月6号至19号:49:53.489:INFO /家庭(2627):2130837506
  十二月6号至19号:49:53.489:INFO /家庭(2627):2130837508
  十二月6号至19号:49:53.489:INFO /家庭(2627):2130837510
  十二月6号至19号:49:53.489:INFO /家庭(2627):2130837505
  十二月6号至19号:49:53.489:INFO /家庭(2627):2130837507
  十二月6号至19号:49:53.489:INFO /家庭(2627):2130837509

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

您可以看到列表的顺序。它的不同,那么之前。要在code使用。

You can see the sequence of your list. Its different then before. To use in your code.

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);

在你的 getView()

// 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;
}

这篇关于在GridView中随机图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆