检查一个CheckBox,在ListView中设置另一个取消选中

时间:2018-01-20 11:55:03

标签: android listview checkbox

listView with dual CheckBox Image

Android中的新功能 我在列表中有两个复选框,我希望一次检查一个,而另一个

我的main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/student_name"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:padding="20dp"/>

    <CheckBox
        android:id="@+id/present_check"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="false"
        android:duplicateParentState="false" />

    <CheckBox
        android:id="@+id/absent_check"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

list.xml

<LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:orientation="vertical">

        <ListView
            android:id="@+id/names_list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </ListView>

    </LinearLayout

4 个答案:

答案 0 :(得分:1)

您可以使用RadioGroup代替Checkbox,然后将两个radioButton添加到radioGroup。

答案 1 :(得分:0)

出于您的目的,只需使用RadioButton,请检查此tutorial

另外,请参阅此answer了解如何使用RadioButtonRadioGroup

进行此操作

答案 2 :(得分:0)

单选按钮专为此案例设计。但是,如果您确实要使用复选框,则当复选框中列表中的项目发生单击事件时,请将当前复选框的反向设置为其他复选框选中状态。因此,如果您收到类似此伪代码的事件:

onCheckChanged(CheckBox oneCheckbox, boolean isChecked){
    otherCheckbox.setChecked(!isCchecked);
}

答案 3 :(得分:0)

当您点击 listView 中的一行时,您必须调用 notifyDataSetChanged(),以便更新所有视图。

listView.setOnItemClickListener((parent, view, position, id) -> {
        
// do something
    
notifyDataSetChanged()
});