0

アプリとその子ビューで展開可能なリスト ビューを使用しています。ラジオ ボタンのカスタム リストを使用しています。ここでの問題は、一度に 1 つのラジオ ボタンのみを選択する必要があることです。ラジオ ボタンが 1 つの場合これは私が使用しているコードです:

@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が一度に選択できるボタンは 1 つだけです。それ以外の場合、それらはすべてオンまたはオフにすることができます。それに関するドキュメントを参照してくださいここ

于 2013-01-04T15:26:43.930 に答える
1

RadioGroup は「1 つ以上の RadioButton ビューをグループ化するために使用されるため、RadioGroup 内で 1 つの RadioButton のみをチェックできるようになる」ため、代わりに RadioGroup を使用してください。

    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 に答える