Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 自定义无线电组,添加;setOnCheckedChangeListener";_Android_Radio Group_Oncheckedchanged - Fatal编程技术网

Android 自定义无线电组,添加;setOnCheckedChangeListener";

Android 自定义无线电组,添加;setOnCheckedChangeListener";,android,radio-group,oncheckedchanged,Android,Radio Group,Oncheckedchanged,好的,首先我有一个自定义的放射组,因为我需要不同的放射组布局,例如3x3放射组 该类如下所示: public class CustomRadioButtons extends TableLayout implements OnClickListener{ private static final String TAG = "ToggleButtonGroupTableLayout"; private RadioButton activeRadioButton; public CustomRa

好的,首先我有一个自定义的放射组,因为我需要不同的放射组布局,例如3x3放射组

该类如下所示:

public class CustomRadioButtons extends TableLayout implements OnClickListener{

private static final String TAG = "ToggleButtonGroupTableLayout";
private RadioButton activeRadioButton;

public CustomRadioButtons(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

public CustomRadioButtons(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}


@Override
public void onClick(View v) {
    final RadioButton rb = (RadioButton) v;
    if ( activeRadioButton != null ) {
        activeRadioButton.setChecked(false);
    }
    rb.setChecked(true);
    activeRadioButton = rb;
}

@Override
public void addView(View child, int index,
                    android.view.ViewGroup.LayoutParams params) {
    super.addView(child, index, params);
    setChildrenOnClickListener((TableRow)child);
}

@Override
public void addView(View child, android.view.ViewGroup.LayoutParams params) {
    super.addView(child, params);
    setChildrenOnClickListener((TableRow)child);
}

private void setChildrenOnClickListener(TableRow tr) {
    final int c = tr.getChildCount();
    for (int i=0; i < c; i++) {
        final View v = tr.getChildAt(i);
        if ( v instanceof RadioButton ) {
            v.setOnClickListener(this);
        }
    }
}

public int getCheckedRadioButtonId() {
    if ( activeRadioButton != null ) {
        return activeRadioButton.getId();
    }
    return -1;
}

public void resetGroup() {
    if ( activeRadioButton != null ) {
        activeRadioButton.setChecked(false);
    }
}

public String getCheckedRadioButtonText() {
    if ( activeRadioButton != null ) {
        return activeRadioButton.getText().toString();
    }
    return "";
}

}
所以我的问题是,在这种情况下,如何设置OnCheckedChangeListner。我想我必须修改“CustomRadioButtons”类,但我不知道如何修改


谢谢你的帮助!=)

原始RadioButton扩展了CompoundButton。因此,您可以检查它是如何在android框架中实现的:利用单个按钮的单击侦听器来更新当前状态应该不难。如果我知道该怎么做,我现在就不会问这个问题了,是吗?你能给我提供一个工作的示例代码或者一些简单易懂的东西,这样我就可以继续前进并向上投票了吗?
    final LayoutInflater[] inflater = {(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)};
    final View vi = inflater[0].inflate(R.layout.alertdialogxml, null);
    final CustomRadioButtons radioGroup = (CustomRadioButtons) vi.findViewById(R.id.radioGroup);

//this is how i would proceed (and it works) if this was a regular radioGroup.
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                //I wanna do Stuff Here.
            }
        });