如何从动态编辑文本和广播组中获取值?

时间:2017-10-07 09:56:41

标签: android radio-button

我创建了动态视图。该视图包含两个edittext和一个无线电组。当我单击添加按钮时,视图将添加到布局中。现在我感到困惑,如何从这些类型的动态视图中获取值。我试过但它不起作用。当我添加两个或更多视图时,循环找不到下一个视图值。我想将这些值添加到ArrayList。这是代码:

private void addDynamicViews(){

EditText name = new EditText(this);
EditText mobile = new EditText(this);

LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
p.setMargins(10, 10, 5, 5);

name.setLayoutParams(p);
name.setBackgroundResource(R.drawable.edittext_box);
name.setHint("Enter Name");
studentslayout.addView(name);

mobile.setLayoutParams(p);
mobile.setBackgroundResource(R.drawable.edittext_box);
mobile.setHint("Enter Mobile No");
studentslayout.addView(mobile);

/* radioGroup - Radio Group 
 maleButton,femaleButton - Radio Buttons
 studentslayout - Linear Layout */

radioGroup = new RadioGroup(this);
radioGroup.setOrientation(RadioGroup.VERTICAL);
maleButton = new RadioButton(this);
maleButton.setText("Male");
radioGroup.addView(maleButton);

femaleButton = new RadioButton(this);
radioGroup.addView(femaleButton);
femaleButton.setText("Female");
studentslayout.addView(radioGroup);
}

如何获取所有动态edittext和广播组值? 我试过这段代码但不幸的是它停止了。

 @Override
            public void onClick(View v) {

                String[] array = new String[studentslayout.getChildCount()];
                int count = studentslayout.getChildCount();
                for (int i=0; i < studentslayout.getChildCount(); i++){

                    editText = (EditText)studentslayout.getChildAt(i);
                    array[i] = editText.getText().toString();

                    RadioButton radValues = (RadioButton) studentslayout.getChildAt(i);
                    array[i] = radValues.getText().toString();

                }
            }

1 个答案:

答案 0 :(得分:1)

RadioButton radValues = (RadioButton) studentslayout.getChildAt(i);

您已添加了radioGroup并期待无线电按钮。此外,由于您正在循环,您应该检查视图的类型。

您可以尝试这样的事情:

int childCount = studentslayout.getChildCount();
for (int i = 0; i < childCount; i++) {
    View childView = studentslayout.getChildAt(i);
    if (childView instanceof EditText) {
        EditText editText = (EditText) childView;
        String text = editText.getText().toString();
        //use text
    } else if (childView instanceof RadioGroup) {
        RadioGroup radioGroup = (RadioGroup) childView;
        int radioCount = radioGroup.getChildCount();
        for (int j = 0; j < radioCount; j++) {
            RadioButton radioButton = (RadioButton) radioGroup.getChildAt(i);
            //use radioButton.
        }
    }
}