2012-08-07 30 views
3

我有一個自定義視圖,其中包含一個RadioButton視圖。使用單選按鈕添加自定義視圖到廣播組

的SingleRadioItem:

public class SingleRadioItem extends LinearLayout { 
    private TextView mTextKey; 
    private RadioButton mRadioButton; 
    private ImageView mImageSeparator; 

    public SingleRadioItem(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     View view = LayoutInflater.from(context).inflate(R.layout.rtl_single_radio_item, this, true); 

     mTextKey = (TextView)view.findViewById(R.id.single_radio_item_text_key); 
     mRadioButton = (RadioButton)view.findViewById(R.id.single_radio_item_button); 
     mImageSeparator = (ImageView)view.findViewById(R.id.single_image_separator); 
    } 

    public void setKey(String key) { 
     mTextKey.setText(key); 
    } 

    public boolean getSelectedState() { 
     return mRadioButton.isSelected(); 
    } 

    public void setSelectedState(boolean selected) { 
     mRadioButton.setSelected(selected); 
    } 
} 

我要創造這種觀點的情況下,將其添加到RadioGroup中和RadioGroup中添加到LinearLayout中。 當我這樣做,它允許作爲選擇的,這意味着,在RadioGroup中有點問題我來設置所有單選按鈕(可能是因爲我是怎麼做的..)

RadioGroup radioGroup = new RadioGroup(this); 
     radioGroup.setOrientation(RadioGroup.VERTICAL); 

     SingleRadioItem radio1 = new SingleRadioItem(this, null); 
     SingleRadioItem radio2 = new SingleRadioItem(this, null); 

     radioGroup.addView(radio1); 
     radioGroup.addView(radio2); 

     updateDetailsView.addView(radioGroup); 

顯然,當我添加RadioGroup運作良好。

它甚至可以添加一個視圖,它擁有一個單選按鈕到一個radiogroup,我只是缺少一些東西或根本不可能?

謝謝!

SOLUTION: 延長@cosmincalistru答案和幫助他人:

因爲我加入的LinearLayout我重視這樣的監聽器每個SingleRadioItem:

radio1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       if (lastRadioChecked != null) { 
        lastRadioChecked.setCheckedState(false); 
       } 

       lastRadioChecked = (SingleRadioItem)v; 
       lastRadioChecked.setCheckedState(true); 
      } 
     }); 

您還需要設置SingleRadioItem XML中的RadioButton View可點擊:false。

回答

2

RadioButton必須直接隸屬於RadioGroup,否則您的按鈕將被視爲來自不同的組。 最好的想法是在你的案例中的每個RadioButton上使用監聽器。

編輯: 每當我想打一個單選按鈕組作爲一部分從一組,但不能使用RadioGroup中我做這樣的事:

RadioButton r1,r2,....; 
// Instantiate all your buttons; 
... 
// Set listener on each 
for(each RadioButton) { 
    rx.setOnCheckedChangeListener(OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if (isChecked) { 
       //set all buttons to false; 
       for(each RadioButton) { 
        rx.setChecked(false); 
       } 
       //set new selected button to true; 
       buttonView.setChecked(true); 
      } 
     } 
    }); 
} 
0

當您將視圖添加到RadioGroup時,僅當該視圖僅是一個instanceof RadioButton時,該組才能正常工作。在你的情況下,你正在添加一個LinearLayout。所以SingleRadioItem應該擴展RadioButton。