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);
显然,当我添加Radiobutton radio1 = new Radiobutton(this); RadioGroup效果很好.
是否甚至可以添加一个视图,将一个单选按钮添加到一个放射组,我只是遗漏了一些东西或根本不可能?
谢谢!
解:
扩展@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视图设置为可单击:false.
解决方法 Radiobutton必须直接从属于RadioGroup,否则您的按钮将被视为来自不同的组.最好的想法是在你的情况下在每个Radiobutton上使用监听器.
编辑:
每当我想将一组Radiobuttons作为一个组的一部分而不能使用RadioGroup时,我会做这样的事情:
Radiobutton r1,r2,....;// Instantiate all your buttons;...// Set Listener on eachfor(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); } } });}总结
以上是内存溢出为你收集整理的android – 使用单选按钮向自定义组添加自定义视图全部内容,希望文章能够帮你解决android – 使用单选按钮向自定义组添加自定义视图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)