Как добавить случайный массив целых чисел в gridview в Android - PullRequest
0 голосов
/ 19 марта 2012

Я делаю заявку, и мне нужно отобразить некоторые изображения в виде сетки.Мне нужно отображать изображения в этом виде сетки случайно.Итак, здесь я взял один целочисленный массив, такой как mThumbIds[], в котором я добавил все изображения, затем я взял arraylistl, как solutionList, затем mThumbIds [] intrgerarray.

Я добавил в solutionList array. Затем я применяю случайную функцию.к этому SolutionList Arrat затем снова я добавляю массив 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 голосов
/ 19 марта 2012

Решением здесь является хранение индексов предметов, которые уже используются в специальном 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);

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...