Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在ListView中的RadioGroup内添加单选按钮_Java_Android_Listview_Android Radiogroup - Fatal编程技术网

Java 在ListView中的RadioGroup内添加单选按钮

Java 在ListView中的RadioGroup内添加单选按钮,java,android,listview,android-radiogroup,Java,Android,Listview,Android Radiogroup,我一直在尝试在列表视图中的单选组中添加单选按钮。 因此,如果我单击一个单选按钮,它会检查它,但如果我单击另一个单选按钮,它不会删除以前的选择。我是android的初学者,所以如果我做错了什么,请原谅我 这是我的主要活动,我的广播组在名单之外 这是列表中每个项目的自定义视图 这是我的列表适配器 private final class车辆适配器扩展了BaseAdapter{ 更平坦的过滤器; 阵列列表车辆阵列; 公共车辆适配器(上下文应用程序上下文、数组列表项){ 车辆数组=项目; infl

我一直在尝试在列表视图中的单选组中添加单选按钮。 因此,如果我单击一个单选按钮,它会检查它,但如果我单击另一个单选按钮,它不会删除以前的选择。我是android的初学者,所以如果我做错了什么,请原谅我

这是我的主要活动,我的广播组在名单之外

这是列表中每个项目的自定义视图

这是我的列表适配器
private final class车辆适配器扩展了BaseAdapter{
更平坦的过滤器;
阵列列表车辆阵列;
公共车辆适配器(上下文应用程序上下文、数组列表项){
车辆数组=项目;
inflter=(LayoutInflater.from(applicationContext));
}
@凌驾
public int getCount(){
返回vehiclesArray.size();
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回Long.parseLong(vehiclesArray.get(position.getId());
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
车载支架;
VehicleItem VehicleItem=VehicleArray.get(位置);
如果(convertView==null){//如果convertView为null
convertView=过滤器充气(右布局车辆\项目,父项,错误);
保持架=新车辆保持架();
holder.name=convertView.findViewById(R.id.car_选中);
holder.vin=convertView.findViewById(R.id.vin);
//初始化视图
convertView.setTag(holder);//在视图上设置标记
}否则{
holder=(VehicleHolder)convertView.getTag();
//如果不为null,则获取标记
//不需要初始化
}
如果(vehicleItem.getId()等于(currentVehicle)){
holder.name.setChecked(true);
}
holder.name.setText(vehicleItem.getName());
holder.vin.setText(vehicleItem.getVin());
//在此处更新视图
返回视图;
}
}

如果您需要查看其他内容,请让我知道。

RadioGroup
是一个
线性布局
,旨在拥有
RadioButton
子项,以便正确处理选中/取消选中。您必须删除它,然后自己从适配器中处理选中/取消选中逻辑。

将其添加到您的列表\u item.xml中 您将在每一行中获得radioGroup 并从main_activity.xml中删除RadioGroup

希望这能帮助你

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alwaysDrawnWithCache="true"
android:backgroundTint="#ffffff">

<RadioGroup
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/car_list_radio_group">
  <RadioButton
    android:id="@+id/car_selected"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_centerVertical="true"
    android:buttonTint="@color/tesla_red"
    android:padding="10dp"
    android:text=""
    android:textColor="@android:color/white"
    android:textSize="16sp"
    android:textStyle="bold" />

    <RadioButton
    android:id="@+id/car_not_selected"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_centerVertical="true"
    android:layout_torightof="@+id/car_selected" 
    android:buttonTint="@color/tesla_red"
    android:padding="10dp"
    android:text=""
    android:textColor="@android:color/white"
    android:textSize="16sp"
    android:textStyle="bold"
</RadioGroup>
 <TextView
    android:id="@+id/vin"
    android:layout_width="183dp"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/car_selected"
    android:layout_marginStart="30dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:textColor="@android:color/white"
    android:textSize="12sp" />

 </RelativeLayout>


你能用你的解决方案多指导一点吗?谢谢。您的自定义视图布局看起来不错,请从活动布局中删除
RadioGroup
。您可以这样处理适配器类中的单击:当单击单选按钮时,除刚刚单击视图的车辆(当前车辆)之外的所有车辆都将取消选中。另外,一个很好的改进是使用
RecyclerView
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:alwaysDrawnWithCache="true"
    android:backgroundTint="#ffffff">


    <RadioButton
        android:id="@+id/car_selected"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_centerVertical="true"
        android:buttonTint="@color/tesla_red"
        android:padding="10dp"
        android:text=""
        android:textColor="@android:color/white"
        android:textSize="16sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/vin"
        android:layout_width="183dp"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/car_selected"
        android:layout_marginStart="30dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:textColor="@android:color/white"
        android:textSize="12sp" />

</RelativeLayout>
private final class VehiclesAdapter extends BaseAdapter {

        LayoutInflater inflter;
        ArrayList<VehicleItem> vehiclesArray;

        public VehiclesAdapter(Context applicationContext, ArrayList<VehicleItem> items) {
            vehiclesArray = items;
            inflter = (LayoutInflater.from(applicationContext));
        }

        @Override
        public int getCount() {
            return vehiclesArray.size();
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return Long.parseLong(vehiclesArray.get(position).getId());
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            VehicleHolder holder;
            VehicleItem vehicleItem = vehiclesArray.get(position);

            if (convertView == null) { // if convertView is null
                convertView = inflter.inflate(R.layout.vehicle_item, parent, false);

                holder = new VehicleHolder();
                holder.name = convertView.findViewById(R.id.car_selected);
                holder.vin = convertView.findViewById(R.id.vin);

                // initialize views
                convertView.setTag(holder);  // set tag on view
            } else {
                holder = (VehicleHolder) convertView.getTag();
                // if not null get tag
                // no need to initialize
            }

            if(vehicleItem.getId().equals(currentVehicle)){
                holder.name.setChecked(true);
            }

            holder.name.setText(vehicleItem.getName());
            holder.vin.setText(vehicleItem.getVin());

            //update views here
            return convertView;
        }
    }
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alwaysDrawnWithCache="true"
android:backgroundTint="#ffffff">

<RadioGroup
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/car_list_radio_group">
  <RadioButton
    android:id="@+id/car_selected"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_centerVertical="true"
    android:buttonTint="@color/tesla_red"
    android:padding="10dp"
    android:text=""
    android:textColor="@android:color/white"
    android:textSize="16sp"
    android:textStyle="bold" />

    <RadioButton
    android:id="@+id/car_not_selected"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_centerVertical="true"
    android:layout_torightof="@+id/car_selected" 
    android:buttonTint="@color/tesla_red"
    android:padding="10dp"
    android:text=""
    android:textColor="@android:color/white"
    android:textSize="16sp"
    android:textStyle="bold"
</RadioGroup>
 <TextView
    android:id="@+id/vin"
    android:layout_width="183dp"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/car_selected"
    android:layout_marginStart="30dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:textColor="@android:color/white"
    android:textSize="12sp" />

 </RelativeLayout>