2行列表XML与复选框

时间:2011-04-28 15:47:49

标签: android xml listview

我有一个2行列表XML,第一行也有一个复选框。此数据不会保存,只需在执行列出的任务时检查列表中的项目。

我有2个问题。当我检查第一个复选框时,列表中的另一行也会被检查。复选框没有ID,但必须有一些内容表明它是第一行的一部分?

当我改变方向时,屏幕会刷新,我想停止,因为没有保存复选框。

这是XML

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout android:id="@+id/BG" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">

<LinearLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:orientation="horizontal">

    <CheckBox android:text="" android:paddingRight="-10sp"
        android:layout_marginRight="-10sp" android:layout_weight=".1"
        android:textColor="@color/ndList" 
        android:layout_width="wrap_content" android:layout_height="wrap_content">

    </CheckBox>

    <TextView android:id="@+id/Ltext1" android:textColor="@color/ndList"
        android:layout_width="wrap_content" android:layout_weight="2"

        android:layout_height="wrap_content" android:layout_marginLeft="6dip"
        android:layout_marginTop="6dip" android:text="ONE"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

<LinearLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:orientation="horizontal">

    <TextView android:id="@+id/Ltext2" android:textColor="@color/ndList"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_below="@+id/Ltext1" android:layout_alignLeft="@+id/Ltext1"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="TWO" />
</LinearLayout>

</LinearLayout>

2 个答案:

答案 0 :(得分:0)

我没有完全按照问题的第一部分,关于复选框状态保存的第二部分在下面回答:

活动在方向更改时关闭并重新启动。

使用onSaveInstanceState(Bundle)存储所选选项,并在onCreate(Bundle)中恢复该选择。

onSaveInstanceState(Bundle bundle) {
bundle.putBoolean("checked", checkBox.isChecked());
}


onCreate(Bundle bundle) {
if (bundle.containsKey("checked")) {
checkBox.setChecked(bundle.getBoolean("checked"));
}

答案 1 :(得分:0)

您应该确保更新所有可以在intemrenderer中更改其内容的视图。必须使用ListAdapter的{​​{1}}方法完成此操作。
这也包括复选框。因此,如果您没有持有复选框选中状态的基础数据成员(项目数据中为getView),则复选框将继续清除其状态。