0

私は Android 3.1 アプリケーションを開発しています。

ListViewこのレイアウトのアイテムがあります:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <CheckBox
        android:id="@+id/itemCheckBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>

そして、これはlistを使用したアクティビティのレイアウトです:

<?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="match_parent"
    android:orientation="vertical" >
    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="629dp" >
    </ListView>
    <Button
        android:id="@+id/downloadFormsButton"
        android:enabled="false"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="@string/download_forms_button" />
    <TextView
        android:id="@+id/formErrorMsg"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="10dp"
        android:textSize="16sp" >
    </TextView>
</LinearLayout>

downloadFormsButtonユーザーが 1 つ以上のリスト項目のチェックボックスを選択したときに有効にするにはどうすればよいですか?

4

1 に答える 1

1

チェックボックスに onCheckedChangeListener を実装し、アダプタでチェックされた項目のリストを管理します。チェックされた状態が変更されるたびに、チェックされたアイテムのリストが空であるかどうかを確認し、それに基づいてボタンを有効/無効にします。

checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
            {
                if (isChecked)
                    checkedItems.add(itemId);
                else
                    checkedItems.remove(itemId);

                downloadFormsButton.setEnabled(checkedItems.size() > 0); //sets button enabled = true if size is greater than 0.

            }
        });
于 2012-04-16T14:17:03.433 に答える