Я хотел сделать приложение, в котором мне нужно было бы произвольно генерировать изображения, но по порядку ....

Например: - ЯБЛОКО .... я хочу сгенерировать его как A_PP_E .... но я также хочу, чтобы они каждый раз были уникальными

final int[] imageViews = {
        R.id.imageView2, R.id.imageView10, R.id.imageView3, 
        R.id.imageView4, R.id.imageView5, R.id.imageView6, R.id.imageView8  };
int[] photos={R.drawable.aa, R.drawable.pp
        ,R.drawable.ee,
        R.drawable.pp_blue,R.drawable.ll};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // for randomizing the view
     Random rng = new Random(); 
     List<Integer> generated = new ArrayList<Integer>();
     for (int i = 0; i < 5; i++)
     {
       while(true)
       {
          Integer next = rng.nextInt(5) ;
          if (!generated.contains(next))
          {
             generated.add(next);
             ImageView iv = (ImageView)findViewById(imageViews[i]);
             iv.setImageResource(photos[next]);
             break;
          }
        }
     }
0
satya prakash 30 Дек 2013 в 15:26

2 ответа

Лучший ответ

Шаг 1): поместите изображения в массив в правильном порядке, как показано ниже:

int[] photos={R.drawable.aa, R.drawable.pp, R.drawable.pp_blue, R.drawable.ll, R.drawable.ee}; // correct order APPLE

Шаг 2): обновите свой код, как показано ниже:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Random rng = new Random();
    List<Integer> generated = new ArrayList<Integer>();

    // select `n` places which will be "BLANK"
    int n = 2; // example `n=2`
    for (int i = 0; i < n; i++)
    {
        while(true)
        {
            Integer next = rng.nextInt(5) ;
            if (!generated.contains(next))
            {
                generated.add(next);
                break;
            }
        }
    }

    // now `generated` has `n` random positions
    // set these `n` positions as "BLANK" rest as "FILLED"
    for (int i = 0; i < 5; i++)
    {
        ImageView iv = (ImageView)findViewById(imageViews[i]);
        if(generated.contains(i)) {
            // this was a random selected position
            // set it blank or empty
            iv.setImageBitmap(null);
        }
        else {
            // set this image as the correct alphabet
            iv.setImageResource(photos[i]);
        }
    }

}
1
Amulya Khare 30 Дек 2013 в 16:17

Я делаю это для получения пустых изображений в другом массиве просмотра изображений .... и его правильного вывода

int n = 2; // example `n=2`
    for (int i = 0; i < n; i++)
    {
        while(true)
        {
            Integer next = rng.nextInt(5) ;
            Log.i("test","value:-"+next);               
            if (!generated.contains(next))
            {
                generated.add(next);
                break;
            }

        }
    }

    for (int i1 = 0; i1 < 2; i1++)
    {
        ImageView ne = (ImageView)findViewById(nextimages[i1]);

         ne.setImageResource(photos[generated.get(i1)]);Log.i("test","value:-"+photos[generated.get(i1)]);
    }
0
satya prakash 31 Дек 2013 в 06:29