我有一个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 ......等等...... 但重要的是我不想改变收音机的文本,因为我说我希望交换位置。
答案 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--;
}
}