2014-02-13 2 views
0

Я работаю с простой игрой. Я хочу перетасовать список действий. Когда я нажимаю кнопку, он будет произвольно выбирать действие и загружать его, используя начальное намерение активности. Это возможно? С чего начать? Заранее спасибо.Как перетасовать список видов деятельности

Редактировать

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

Button shuffle = (Button) findViewById(R.id.button1); 

final ArrayList<Class> activities = new ArrayList<Class>(4); 
activities.add(SampleTwo.class); 
activities.add(SampleThree.class); 
activities.add(SampleFour.class); 
activities.add(SampleFive.class); 


shuffle.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Random rand = new Random(); 
     int random = rand.nextInt(activities.size()); 
     Intent i = new Intent(context, activities.get(random)); 
     startActivity(i); 
     } 

}); 
+0

вам нужно перетасовать список, или вы просто хотите, чтобы выбрать случайное действие из списка ли? –

+0

Я хочу случайным образом выбрать активность из списка. Является ли это возможным? – user3149781

+0

Абсолютно, см. Мой ответ. –

ответ

0

Чтобы перетасовать список, вы можете использовать метод Collections#shuffle():

Collections.shuffle(list); 

, если вам просто нужно выбрать случайное действие из списка я хотел бы сделать:

if(list.size() > 0){ 
    list.get((new Random()).nextInt(list.size())); 
    } 

Random генерирует псевдослучайные числа, nextInt (номер) будет генерировать номер из интервала 0 (включительно) - номера (исключительного).

Чтобы начать случайную операцию, вам не нужен объект Activity, все что вам нужно, это его объект Class. Так создать ArrayList как:

ArrayList<Class> activities = new ArrayList<Class>(); 
activities.add(SomeActivity.class); 

Intent i = new Intent(context, activities.get(random)); 
startActivity(i); 
+0

Что делать, если я использую список массивов для создания списка операций? Можно ли включить класс в список массивов? С помощью функции .add? – user3149781

+0

Ну ваш список определяется как ArrayList или ArrayList ? –

+0

Я хочу вызвать сам класс, чтобы я мог использовать его функции. – user3149781

Смежные вопросы