@Override public void onClick(View v) { if (v instanceof RadioButton) { if (rowActionListener == null) return; ViewParent parent = v.getParent(); if (!(parent instanceof RadioGroup)) return; RadioGroup group = (RadioGroup) parent; Object tag = group.getTag(); if (!(tag instanceof Integer)) return; int position = (Integer) tag; if (GlobalConstants.LOG_DEBUG) Log.d( GlobalConstants.LOG_TAG, "RadioButton clicked " + Boolean.toString(((RadioButton) v).isChecked())); int checkedId = v.getId(); switch (checkedId) { case R.id.option_nochange: rowActionListener.onRadioButtonClick( group, checkedId, position, PDroidSettingListFragment.OnDetailRowActionListener.CheckedOption.NO_CHANGE); break; case R.id.option_allow: rowActionListener.onRadioButtonClick( group, checkedId, position, PDroidSettingListFragment.OnDetailRowActionListener.CheckedOption.ALLOW); break; case R.id.option_yes: rowActionListener.onRadioButtonClick( group, checkedId, position, PDroidSettingListFragment.OnDetailRowActionListener.CheckedOption.YES); break; case R.id.option_custom: rowActionListener.onRadioButtonClick( group, checkedId, position, PDroidSettingListFragment.OnDetailRowActionListener.CheckedOption.CUSTOM); break; case R.id.option_customlocation: rowActionListener.onRadioButtonClick( group, checkedId, position, PDroidSettingListFragment.OnDetailRowActionListener.CheckedOption.CUSTOMLOCATION); break; case R.id.option_random: rowActionListener.onRadioButtonClick( group, checkedId, position, PDroidSettingListFragment.OnDetailRowActionListener.CheckedOption.RANDOM); break; case R.id.option_deny: rowActionListener.onRadioButtonClick( group, checkedId, position, PDroidSettingListFragment.OnDetailRowActionListener.CheckedOption.DENY); break; case R.id.option_no: rowActionListener.onRadioButtonClick( group, checkedId, position, PDroidSettingListFragment.OnDetailRowActionListener.CheckedOption.NO); break; } notifyDataSetChanged(); } }