交换位置的无线电 - Android java

时间:2014-04-22 13:51:51

标签: java android radio-button

我有一个RadioGroup,有四个无线电。

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

    RadioButton r0 = (RadioButton) findViewById(R.id.radio0);
    RadioButton r1 = (RadioButton) findViewById(R.id.radio1);
    RadioButton r2 = (RadioButton) findViewById(R.id.radio2);
    RadioButton r3 = (RadioButton) findViewById(R.id.radio3);

我将文本设置为所有文本。

    r0.setText("1");
    r1.setText("2");
    r2.setText("3");
    r3.setText("4");

所以我得到了这样的无线电,如1,2,3,4。我怎样才能随机交换无线电的位置。我想得到像这样的东西3,2,1,4或2,3,1,4 ......等等...... 但重要的是我不想改变收音机的文本,因为我说我希望交换位置。

2 个答案:

答案 0 :(得分:0)

我认为您无法使用相同的布局XML文件来实现此目的。

使用4种不同的布局,并随机充气。

如果您在每个XML文件中保持相同,那么所有ID都将始终有效。

@Override
public void onCreate(final Bundle bundle) {
  super.onCreate(bundle);
  setContentView(randomLayout());

  RadioGroup rg = (RadioGroup) findViewById(R.id.radioGroup);
  // ...
}

public static int randomLayout() {
  final int n[] = { R.layout.layout1, R.layout.layout2, R.layout.layout3, R.layout.layout4 }
  Random random = new Random();
  return n[random.nextInt(n.length)];
}

答案 1 :(得分:0)

非常快捷: 如果你不知道, 以这种方式尝试一下

类似......

int n = nb of radios;

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

RadioButton r0 = new RadioButton(this);
RadioButton r1 = new RadioButton(this);
RadioButton rn = new RadioButton(this);

r0.setId(/*idr0*/);
r1.setId(/*idr1*/);
rn.setId(/*idrn*/);

r0.setText("text0");
rn.setText("textn");

ArrayList<RadioButton> e = new ArrayList<RadioButton>();
e.add(r0);
e.add(rn);

Random rand = new Random();

while(n<0)
{
 int i = rand.nextInt(n);

 if (e.get(i) != null)
 { 
   rg.add(e.get(i));
   e.remove(i);
   n--;
 }
}