Android Checkbox无法返回正确的值

时间:2017-11-09 11:17:03

标签: android xml checkbox

我正在使用具有复选框的自定义列表视图。我想知道复选框是否已选中。所以我用getCheckedItemPositions()来获取checked_info。如果我设置“android:clickable =”true“”,则复选框不会返回结果。但是,如果我设置“android:clickable =”false“”,视图中没有任何变化,但复选框返回其检查信息。有什么问题?底部代码是我使用getCheckedItemPostions()和自定义listiview的XML代码的方法。

public void deleteButton(View v)
{
    int i,count;
    count = mMyAdapter.mItems.size();
    SparseBooleanArray checked = mListView.getCheckedItemPositions();
}





<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:id="@+id/checkBox1"
            android:visibility="gone"
            android:focusable="false"
            android:clickable="false"
            android:checkable="true"



            android:layout_weight="1" />


        <LinearLayout

            android:layout_weight="4"

            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="horizontal">
            <TextView
                android:layout_weight="1"
                android:id="@+id/name"
                android:layout_width="15dp"
                android:layout_height="match_parent"
                android:textSize="10pt"
                android:text="name.." />


            <TextView
                android:layout_weight="1"
                android:id="@+id/time"
                android:layout_width="15dp"
                android:layout_height="match_parent"
                android:textSize="12pt"
                android:text="name.." />


        </LinearLayout>


        <ToggleButton
            android:layout_weight="1"
            android:layout_gravity="right"
            android:id="@+id/toggleButton3"
            android:layout_width="6dp"
            android:layout_height="match_parent"

            android:text="Toggle"
            android:textOff="Off"
            android:textOn="On" />

    </LinearLayout>

</LinearLayout>

2 个答案:

答案 0 :(得分:0)

参考此&#34; https://www.tutorialspoint.com/android/android_checkbox_control.htm&#34;检查一次。如果你没有得到答案通知。

答案 1 :(得分:0)

你需要实现setOnCheckedChangeListener,因为设置clickable false会在点击之后停止执行周期,之后你无法获得更新值,所以使它成为true但是通过创建一个布尔值来实现setOnCheckedChangeListener来保存你的复选框状态每个复选框的变量。然后它会工作。

按照本教程实现onCheckedChangeListener:

http://www.technotalkative.com/android-checkbox-example/