java - 在 ListView 的 RadioGroup 内添加 RadioButton
问题描述
我一直在尝试在列表视图的单选组内添加单选按钮。所以,如果我点击一个单选按钮,它会检查它,但如果我点击另一个,它不会删除之前的选择。我是android的初学者,如果我做错了什么,请原谅我。
这是我的主要活动,我在列表之外有电台组
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="20dp">
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/car_list_radio_group">
<ListView
android:id="@+id/vehicle_list"
android:clickable="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"></ListView>
</RadioGroup>
</LinearLayout>
这是我对列表中每个项目的自定义视图
<?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;
}
}
如果您需要查看其他内容,请告诉我。
解决方案
RadioGroup
是一个LinearLayout
并且意味着有RadioButton
孩子以便正确处理检查/取消检查。您将不得不删除它并自己从适配器处理检查/取消检查逻辑。
推荐阅读
- java - 在 JOOQ 中使用 NOWAIT 和 SKIP LOCKED 子句的解决方法
- arrays - mongodb用户表与好友
- java - 如何使用 Java 8 迭代 Java 对象列表
- python - 如何使用我的 Discord Bot 发送电子邮件
- r - 从仅 pdf 的英文文本中提取文本 Canadian Legislation R
- r - 如何创建一个称为性别的向量,其中前 30 个人是男性,其他人是女性
- python - 我的新注册用户可以登录到我的 django web 应用程序
- r - 在 R 中循环使用更改变量来写入和命名文件
- php - 警告:require_once(/home/orgdevelopers.tk/public_html/ok/app/Config/constant.php):无法打开流:没有这样的文件或目录
- python - 如何从 Python 以非 root 用户身份执行 bash 命令?