Как рандомизировать (или перетасовать) порядок кнопок радио - PullRequest
0 голосов
/ 07 ноября 2018

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

Например, мой макет, как показано ниже:

RBtn1
Rbtn2
Rbtn3
Rbtn4

Теперь я хочу перетасовать их всякий раз, когда открываю это конкретное занятие. Как я могу это сделать?

1 Ответ

0 голосов
/ 07 ноября 2018

Насколько я знаю, Layouts в resources неизменны. Это означает, что вы должны сделать Views в динамическом или Java-стиле.

Что вы можете сделать, это использовать класс SecureRandom (точнее, чем Random для выбора случайных чисел), чтобы выбрать случайное число и взять один объект RadioButton из массива RadioButton, который вы создадите.

PoC : Сначала я объясню написанным и протестированным кодом →

import java.util.*;

public class HelloWorld{

     static String los1 = "taotao1";
     static String los2 = "taotao2";
     static String los3 = "taotao3";
     static String los4 = "taotao4";

     static String[] X = {los1,los2,los3,los4};

     public static void main(String []args){
             Collections.shuffle(Arrays.asList(X));
             System.out.println(Arrays.toString(X));
     }

     /*
     Test 1 : [taotao4, taotao3, taotao2, taotao1]
     Test 2 : [taotao2, taotao3, taotao4, taotao1]
     Test 3 : [taotao3, taotao4, taotao1, taotao2]
     Test 4 : [taotao2, taotao4, taotao1, taotao3]
     */

}

Объяснение : Collections.shuffle перемешивает объекты в массиве, как вы сможете увидеть, запустив код.

Концептуальный код : Я говорю это концептуально, потому что пишу прямо в блоке ответов стека без тестирования, тест должен быть выполнен вами.

public class NoNotHelloWorld extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {

     RadioButton r1,r2,r3,r4; //please declare to avoid NullPtr and also declare their functionalities 

     LinearLayout xyz = (LinearLayout)findViewById(R.id.xyzwhatisthis);
    //though unnesseary cast, but I did it.

    ArrayList<RadioButton>  dydx = new ArrayList<RadioButton>(); 
        dydx.add(r1); 
        dydx.add(r2); 
        dydx.add(r3); 
        dydx.add(r4); 

    Collections.shuffle(Arrays.asList(arr));

    for(RadioButton dxdy : dydx){
        xyz.addView(dxdy)
    }

    }

}

Я думаю, что это должно работать, в противном случае есть поле для комментариев.

...