如何在Android中随机排列RadioButtons?

时间:2017-09-16 08:42:01

标签: android android-radiobutton

我有一个radioGroup和四个radiobutton,我只想在程序运行时随机安排这些radiobutton。

说我有单选按钮r1,r2,r3,r4和一个radiogroup。 我希望有时候这些无线电按钮排列成r2,r3,r1,r4(垂直),有时还有r1,r2,r4,r3 ......等等...

我该如何实施?

3 个答案:

答案 0 :(得分:1)

为实现随机RadioButton随机序列,以下代码可以帮助您:

layout.xml文件中添加RadioGroup

 <RadioGroup
        android:id="@+id/gul_radio_group"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

在你的java文件中:

final int NUMBER_OF_RADIOBUTTONS_TO_ADD = 4;//Change it for other number of RadioButtons
    RadioButton[] radioButton;
    RadioGroup radioGroup;


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

        radioGroup = (RadioGroup) findViewById(R.id.gul_radio_group);

        //Initializing the RadioButtons
        radioButton = new RadioButton[NUMBER_OF_RADIOBUTTONS_TO_ADD];
        for (int i = 0; i < NUMBER_OF_RADIOBUTTONS_TO_ADD; i++) {
            radioButton[i] = new RadioButton(this);

            //Text can be loaded here
            radioButton[i].setText("Button " + (i + 1));
        }

        //Random Swapping
        for (int i = 0; i < 4; i++) {//this loop is randomly changing values 4 times
            int swap_ind1 = ((int) (Math.random() * 10) % NUMBER_OF_RADIOBUTTONS_TO_ADD);
            int swap_ind2 = ((int) (Math.random() * 10) % NUMBER_OF_RADIOBUTTONS_TO_ADD);
            RadioButton temp = radioButton[swap_ind1];
            radioButton[swap_ind1] = radioButton[swap_ind2];
            radioButton[swap_ind2] = temp;
        }
        radioButton[0].setChecked(true);//This will make the top RadioButton selected by default


        //Adding RadioButtons in RadioGroup
        for (int i = 0; i < NUMBER_OF_RADIOBUTTONS_TO_ADD; i++) {
            radioGroup.addView(radioButton[i]);
        }
    }

答案 1 :(得分:0)

编写一个实现随机函数算法的函数(您可以自己编写或在互联网上找到一个 - 它们非常常见且简单)。

然后,使用addView()以编程方式将RadioButton添加到RadioGroup以呈现它们。使用随机函数的结果来确定&#34; index&#34; addView()函数的参数。

您的随机函数将确保每次渲染单选按钮时,它们的顺序保持随机。

<强>更新

为了使事情更清楚,假设您的随机函数返回以下顺序: -

2 1 4 3

现在,您需要做的是使用&#34; index&#34;来调用addView()四次参数按顺序取得上述值。

前: -

addView(radioButton2);
addView(radioButton1);
addView(radioButton4);
addView(radioButton3);

答案 2 :(得分:0)

帖子的随机交换部分的说明:https://stackoverflow.com/a/46252387/6195457

  //Random Swapping
        //This loop iterates the explained process 4 times which is inside it
        for (int i = 0; i < 4; i++) {

             /*0,1,2,3 can be output for ((int) (Math.random() * 10) % 4)
              *Math.random returns a number in between 0 to 1 
              *we multiply it with 10 to make the number from 0 to 10
              *Taking %4 will return a number from 0 to 3*/ 
            int swap_ind1 = ((int) (Math.random() * 10) % NUMBER_OF_RADIOBUTTONS_TO_ADD);

            //Getting second random index as above
            int swap_ind2 = ((int) (Math.random() * 10) % NUMBER_OF_RADIOBUTTONS_TO_ADD);

            //Swapping the RadioButtons at Random indexes above
            RadioButton temp = radioButton[swap_ind1];//storing value of first index in temp
            radioButton[swap_ind1] = radioButton[swap_ind2];//Putting second value at first index
            radioButton[swap_ind2] = temp;// putting first value at second index from temp
        }