0

我在我的应用程序及其子视图中使用可扩展列表视图,我正在使用单选按钮的自定义列表。这里的问题是我想确保一次只能选择一个单选按钮。如果一个单选按钮已选中,其他应取消选中。这是我正在使用的代码:

@Override
    public View getChildView(int groupPosition,int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent)
    {
        m_position = childPosition;

        View l_view = convertView;
        if (l_view == null) 
        {
            LayoutInflater l_vi = (LayoutInflater)m_context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            l_view = l_vi.inflate(R.layout.singleradiobutton, null);

            ViewHolder viewHolder = new ViewHolder();
            viewHolder.l_nameRadioButton = (RadioButton) l_view.findViewById(R.id.radioButton);

            l_view.setTag(viewHolder);
        }

        EnteringValuesToArrayList l_enteringValuesInstance = m_itemsOfAdapterArrayList.get(childPosition);
        String l_nameOfContact = l_enteringValuesInstance.GetNameOfEntry();

        if (l_nameOfContact != null)
        {
            ViewHolder holder = (ViewHolder) l_view.getTag();

            if (holder.l_nameRadioButton != null) 
            {
                holder.l_nameRadioButton.setText(l_nameOfContact);
            }

            if(m_timerValue != 0 && l_enteringValuesInstance.GetTimerValueOfEntry() == m_timerValue)
                holder.l_nameRadioButton.setChecked(true);
            else
                holder.l_nameRadioButton.setChecked(false); 

            holder.l_nameRadioButton.setOnClickListener(new OnItemClickListener(childPosition,holder.l_nameRadioButton.getText(),holder.l_nameRadioButton));          
        }
        return l_view;
    }

    private class OnItemClickListener implements OnClickListener
    {           
        private int l_positionOfItemClicked;
        private CharSequence l_text;
        private RadioButton l_radioButton;
        OnItemClickListener(int position, CharSequence text,RadioButton l_nameRadioButton)
        {
            this.l_positionOfItemClicked = position;
            this.l_text = text;
            this.l_radioButton = l_nameRadioButton;
        }
        @Override
        public void onClick(View arg0) 
        {
            l_radioButton.setChecked(true); 
        }
    }

我搜索了很多,但没有得到问题的解决方案。请帮助我。在此先感谢。

4

3 回答 3

1

你需要radioButtons在一个RadioGroup. 当组合在一起时,每个RadioGroup人一次只能选择一个按钮。否则,它们都可以被选中或不选中。在此处查看有关它的文档

于 2013-01-04T15:26:43.930 回答
1

改用 RadioGroup,因为 RadioGroup “用于将一个或多个 RadioButton 视图组合在一起,从而只允许在 RadioGroup 中检查一个 RadioButton”

    RadioGroup radioGroup = (RadioGroup) findViewById(R.id.rbtGp1);
    radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            RadioButton rb1 = (RadioButton) findViewById(R.id.rbt1);
            if (rb1.isChecked()) {
                // Do something
            else {
                // Do something else
        }
    }
});
于 2013-01-04T15:33:08.167 回答
1

在这个如何在 ListView 自定义适配器中使用 RadioGroup 中提出了类似的问题?

您可以根据自己的情况创建自定义视图。

希望这可以帮助。

于 2013-01-04T15:34:19.243 回答