首页 > 解决方案 > 多个 RadioGroup 和 Radiobutton 创建问题

问题描述

嗨,我正在尝试创建多个单选按钮,这些单选按钮根据每个原因进行分组,当用户选择一个单选按钮时,其他单选按钮应该被取消选中,如下所示 在此处输入图像描述

为了实现这一点,我编写了以下代码,但我面临一个问题,因为每个孩子都被创建为自己的单选按钮组 Activity.xml

    <ExpandableListView
            android:id="@+id/elv_product_fail_reason"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textColor="?attr/text_color"
            android:orientation="vertical"
            android:layout_marginTop="15dp"
            android:layout_marginLeft="0dp"
            android:groupIndicator="@color/transparent">
        </ExpandableListView>

组级.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_job_action_group_level"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:orientation="horizontal"
android:background="?attr/layout_background">

    <TextView
        android:id="@+id/tv_job_action_group_level_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:textColor="?attr/text_color"
        android:textStyle="bold"
        android:layout_weight="1000"/>

    <ImageView android:src="?attr/icon_expander_group"
        android:contentDescription="@string/group_item"
        android:id="@+id/image_job_action_group_level_expander"
        android:layout_width="30dip"
        android:layout_height="30dip"
        android:layout_gravity="right"
        android:layout_weight="1"/>

子级.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_job_action_child_level"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:orientation="vertical"
android:background="?attr/layout_background">

<RadioGroup
    android:id="@+id/radiogrp_job_action_child_level"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

适配器片段

 public View getChildView(int groupPosition, final int childPosition,
   boolean isLastChild, View convertView, ViewGroup parent) {
     View vi=convertView;
     try
     {
             vi = minflater.inflate(R.layout.layout_job_action_child_level, null);
             childHolder = new childView();
             childHolder.reasons=vi.findViewById(R.id.radiogrp_job_action_child_level);

         HashMap<String,String> map=childDataCollection.get(groupPosition).get(childPosition);
         RadioButton radiobutton = new RadioButton(activity);
         radiobutton.setPadding(15, 0,0,0);
         radiobutton.setTextColor(R.attr.text_color);
         radiobutton.setText(map.get(KEY_REASON_DESCRIPTION));
         radiobutton.setId(Integer.valueOf(map.get(KEY_REASON_CODE)));
         childHolder.reasons.addView(radiobutton);
     }
     catch (Exception ex)
     {
         ACRA.getErrorReporter().handleSilentException(ex);
     }

     return vi;
 }
public View getGroupView(int groupPosition, boolean isExpanded,
                                View convertView, ViewGroup parent) {

     View vi=convertView;

     try
     {

         String groupName =  groupDataCollection.get(groupPosition);


         if (vi == null) {

             vi = minflater.inflate(R.layout.layout_job_action_group_level, null);

             groupHolder = new groupView();

             groupHolder.expanderImage = (ImageView) vi.findViewById( R.id.image_job_action_group_level_expander);
             groupHolder.groupTitle = (TextView) vi.findViewById(R.id.tv_job_action_group_level_title);

             vi.setTag(groupHolder);
         }
         else {
             groupHolder = (groupView)vi.getTag();
         }
         if( groupHolder.expanderImage != null ) {

             if( getChildrenCount( groupPosition ) == 0 ) {

                 groupHolder.expanderImage.setVisibility( View.INVISIBLE );

             } else {

                 groupHolder.expanderImage.setVisibility( View.VISIBLE );

                 int imageResource;

                 if (isExpanded) {
                     if(Global.CURRENT_THEME== settingValue.VALUE_THEME_DARK) {
                         imageResource = R.drawable.dark_expander_ic_maximized;
                     } else {
                         imageResource = R.drawable.light_expander_ic_maximized;
                     }
                 } else {
                     if(Global.CURRENT_THEME== settingValue.VALUE_THEME_DARK) {
                         imageResource = R.drawable.dark_expander_ic_minimized;
                     } else {
                         imageResource = R.drawable.light_expander_ic_minimized;
                     }
                 }

                 groupHolder.expanderImage.setImageResource(imageResource);

             }
         }

         groupHolder.groupTitle.setText(groupDataCollection.get(groupPosition));
     }
     catch (Exception ex)
     {
         ACRA.getErrorReporter().handleSilentException(ex);
     }

     return vi;
 }

活动片段(也由于某种原因监听器不工作)

        elvRadioReasons = (ExpandableListView) findViewById(R.id.elv_product_fail_reason);
    elvRadioReasonsAdapter=new AdapterJobAction(groupCINList,dataCollection,elvRadioReasons,this);
    elvRadioReasons.setAdapter(elvRadioReasonsAdapter);
    elvRadioReasons.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
        @Override
        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
            initialiseMain(groupPosition,childPosition);
            return true;
        }
    });

请让我知道我哪里出错了

标签: javaandroidandroid-layoutradio-buttonradio-group

解决方案


推荐阅读