java - 多个 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;
}
});
请让我知道我哪里出错了
解决方案
推荐阅读
- sql - Oracle SQL Left Join 与 FROM 中的多个表
- azure-api-management - 在 vnet 部署的 API 管理实例中导入私有 API 应用(Azure 应用服务)作为 API
- blazor - 缺少 Blazor WebAssembly 3.1 目标框架
- react-native - 如何在 React Native 中处理 Seprate 文件中的导航
- firebase-cloud-messaging - 用户上线时的 Mqtt 消息传递
- android - 如何在android studio中使用ffmpeg添加像tic tok这样的水印
- javascript - 函数的空间复杂度
- javascript - 如何使用 api 在 reactjs 中添加搜索功能
- reactjs - 在 Reactjs 中将表单数据提交到我的 API 时出现“无法读取未定义的属性‘值’”错误
- c - 下面这段代码的时间复杂度和空间复杂度