turtleboy
turtleboy

Reputation: 7574

how to attach a listener to a radio button

I have an activity that displays various radiobuttons. The radiobuttons are grouped in radiogroups. I want some of the radiobutton to disappear when a certain radiobutton is checked. eg when the incident button is checked the fall, trip and illness radiobutton disappear. how can i achieve this?

I have the foolowing code but need to somehow attach a listener to the incident button.

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.reportsomethinglayout);

         resolution = (EditText)findViewById(R.id.editTextresolution);
        // resolution.setInputType(InputType.TYPE_NULL);
        // showSoftKeyboard(resolution);



         accident  = (RadioButton)findViewById(R.id.radioButtonaccident);
         incident  = (RadioButton)findViewById(R.id.radioButtonincident);
         concern  = (RadioButton)findViewById(R.id.radioButtonconcern);
         fall  = (RadioButton)findViewById(R.id.radioButtonfall);
         trip  = (RadioButton)findViewById(R.id.radioButtonTrip);
         illness  = (RadioButton)findViewById(R.id.radioButtonillness);





    }



     public void onRadioButtonClicked(View view) {
            // Is the button now checked?
            boolean checked = ((RadioButton) view).isChecked();

            // Check which radio button was clicked
            switch(view.getId()) {
                case R.id.radioButtonaccident:
                    if (checked)
                        Log.e(TAG, "accident radiobutton checked");
                    break;
                case R.id.radioButtonincident:
                    if (checked)
                        Log.e(TAG, "incident radiobutton checked");

                            fall.setVisibility(View.GONE);
                            trip.setVisibility(View.GONE);
                            illness.setVisibility(View.GONE);
                    break;
            }
        }

.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/carefreebgscaledalphajpg" >
<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
   <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:id="@+id/linearlayoutasscrollneedsonenamedchild" >
<TextView
        android:id="@+id/reportsomethingtitletextview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Carer Reporting"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_gravity="center" />


       <TextView
        android:id="@+id/textViewcategory"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Category" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

     <RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">   


     <RadioButton
        android:id="@+id/radioButtonaccident"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Accident" />

    <RadioButton
        android:id="@+id/radioButtonincident"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Incident" />

    <RadioButton
        android:id="@+id/radioButtonconcern"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Concern" />

    </RadioGroup>


    </LinearLayout>

    <TextView
        android:id="@+id/textViewspacer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="" />


    <TextView
        android:id="@+id/textViewtype"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Type" />

     <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">   

     <RadioButton
        android:id="@+id/radioButtonfall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Fall" />

    <RadioButton
        android:id="@+id/radioButtonTrip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Trip" />

    <RadioButton
        android:id="@+id/radioButtonillness"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Illness" />

    </RadioGroup>

    </LinearLayout>

     <TextView
        android:id="@+id/textViewspacer2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="" />


    <TextView
        android:id="@+id/textViewaction"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Action" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

     <RadioButton
        android:id="@+id/radioButtonCallDoctor"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Call Doctor" />

    <RadioButton
        android:id="@+id/radioButtoncalledkin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Called next of kin" />



    </RadioGroup>

    </LinearLayout>

    <TextView
        android:id="@+id/textViewspacer3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="" />


    <TextView
        android:id="@+id/textViewresolution"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Resolution" />

    <EditText
        android:id="@+id/editTextresolution"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="1"
        android:lines="8"
        android:inputType="textMultiLine"
         >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/buttonsubmit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Submit" />

    </LinearLayout>
</ScrollView> 
</LinearLayout>

Upvotes: 8

Views: 24179

Answers (2)

Shyam
Shyam

Reputation: 6444

try like this:-

RadioGroup group = (RadioGroup) findViewById(R.id.radioGroup1);

group.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) 
       {
        // TODO Auto-generated method stub
        if(radiobutton1.isChecked()) {
             fall.setVisibility(View.GONE);
             trip.setVisibility(View.GONE);
             illness.setVisibility(View.GONE);
        } else if(radiobutton2.isChecked()) {

        }
     }
});

Upvotes: 17

sdabet
sdabet

Reputation: 18670

You can set a listener on a RadioGroup with setOnCheckedChangeListener. The onCheckedChanged callback receives the ID of the newly checked button in the checkedId parameter.

In your case, just add an ID to your radio group (in order to retrieve it from your code)

<RadioGroup
    android:id="@+id/category_group"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

And use the following code:

RadioGroup categoryGroup = (RadioGroup) findViewById(R.id.category_group);
categoryGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
    switch(checkedId) {
        case R.id.radioButtonincident:
            // 'Incident' checked
            fall.setVisibility(View.GONE);
            trip.setVisibility(View.GONE);
            illness.setVisibility(View.GONE);
            break;
        case R.id.radioButtonaccident:
            // 'Accident' checked
            break;
        case R.id.radioButtonconcern:
            // 'Concern' checked
            break;
        }
    }
});

Upvotes: 12

Related Questions