如何使用spinner int值以编程方式添加视图?

时间:2017-02-05 11:13:21

标签: java android android-studio spinner android-spinner

以下是相关代码:

mspin=(Spinner) findViewById(R.id.spinner);
Integer[] items = new Integer[]{1,2,3,4,5,6,7,8,9,10};
ArrayAdapter<Integer> adapter = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item, items);
mspin.setAdapter(adapter);

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

mspin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        int TYPE = Integer.parseInt(mspin.getSelectedItem().toString());

        setRadios(TYPE);

    }

    public void onNothingSelected(AdapterView<?> parent) {

    }
});

public void setRadios(int mk) {

    for(int i=0; i==mk; i++){

        RadioButton bg = new RadioButton(this);
        bg.setText("hello, this is mk");

        RG.addView(bg);

    }

}

我试图从微调器获取一个int值,然后将那么多RadioButtons添加到RadioGruop RG。但是,当我运行代码时,当我点击微调器值时,它什么都不做。

3 个答案:

答案 0 :(得分:1)

尝试这种方法:

public void setRadios(int number) {

    for (int row = 0; row < 1; row++) { //add to first row
        RadioGroup rg = new RadioGroup(this);
        rg.setOrientation(LinearLayout.HORIZONTAL);

        for (int i = 1; i <= number; i++) {
            RadioButton rdbtn = new RadioButton(this);
            rdbtn.setId((row * 2) + i);
            rdbtn.setText("Radio " + rdbtn.getId());
            rg.addView(rdbtn);
        }
        ((ViewGroup) findViewById(R.id.radiogroup)).addView(rg);
    }

  }
XML中的

<RadioGroup
android:id="@+id/radiogroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:orientation="vertical" />

您没有将radiobutton添加到viewgroup

答案 1 :(得分:0)

int TYPE = Integer.parseInt(mspin.getSelectedItem().toString());

这是错误的尝试下面的代码。它会奏效。

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                int TYPE=Integer.parseInt(adapter.getItem(position).toString());

                setRadios(TYPE);

            }

答案 2 :(得分:0)

您的for循环错误地将此for(int i=0; i==mk; i++)更改为此for(int i=0; i<=mk; i++),您也可以简化int Typeint Type = items[position]