android – 使用单选按钮向自定义组添加自定义视图

android – 使用单选按钮向自定义组添加自定义视图,第1张

概述我有一个自定义视图,其中包含一个RadioButton. SingleRadioItem: public class SingleRadioItem extends LinearLayout { private TextView mTextKey; private RadioButton mRadioButton; private ImageView mImageSepar 我有一个自定义视图,其中包含一个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);

显然,当我添加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 – 使用单选按钮向自定义组添加自定义视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1127246.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存