Android GridView中的随机图像
我想知道GridView中是否存在随机图像 下面的代码对我来说运行得很好,但它在启动活动时不会随机出现在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
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):213083750406-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;
}