2013-04-29 1 views
3

У меня есть список с целыми числами 0,1,2,3,4. то я перетасовываю его, а в качестве третьего шага я хочу инициализировать кнопки с первым объектом, связанным с кнопкой1, вторым объектом с кнопкой2 и т. д. Он работает, если я делаю это вручную, но я хочу его динамически решать.Как динамически решить эту случайную кнопку-реализацию

List<Integer> objects = new ArrayList<Integer>(); 
      objects.add(0); 
      objects.add(1); 
      objects.add(2); 
      objects.add(3); 
      objects.add(4); 

     // Shuffle the collection 
    Collections.shuffle(objects); 

//this is not working here, but it should reflect what i am trying to achieve here 
// --> 
    for (int i = 0; i<objects.size(); i++) { 
     Button button**i** = (Button)findViewById(R.id.button**i**); 
     button**i**.setText(objects.get(i).toString()); 
    } 

Заранее спасибо. Любая помощь оценивается (высунув нос в правильном направлении)

+0

что не работает? вы получаете ошибку в 'R.id.button ** i **'? –

+0

ну, вы не можете stringbuild переменную variablename при ее инициализации в java. – bofredo

+2

java не позволяет этого. вы можете использовать подход @fonZ answer ... –

ответ

4

Вы можете решить это, перетасовывая список ваших кнопок. Поскольку вы выполняете итерацию с помощью int, он может служить индексом для перетасованного списка.

Как это:

List<Button> buttons = new ArrayList<Button>(); 
buttons.add((Button)findViewById(R.id.button0)); 
buttons.add((Button)findViewById(R.id.button1)); 
buttons.add((Button)findViewById(R.id.button2)); 
buttons.add((Button)findViewById(R.id.button3)); 
buttons.add((Button)findViewById(R.id.button4)); 

Collections.shuffle(buttons); 

for (int i = 0, s = 4; i < s; i++) { 
    buttons.get(i).setText("" + i); 
} 
+0

"at" -method undefined для списка

+0

Изменено для получения :) – fonZ

+1

Стоит отметить, что первая строка может быть упрощена до 'List indexes = Arrays.asList (новый int [] {0,1,2,3,4});' –

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