4

私のアプリケーションでは、複数のチェック ボックスを含むリストを作成しようとしました。

そのために、複数の選択肢があるものListViewを試してみました。android.R.layout.simple_list_item_multiple_choiceListView

XMLの私のListViewとして、..

<ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="468dp"
        android:choiceMode="multipleChoice"
        android:divider="#b5b5b5"
        android:dividerHeight="1dp" >

そして、私はas内のCheckBoxすべてを選択/選択解除するために使用しますCheckBoxListView

   <CheckBox
            android:id="@+id/select_all"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:layout_column="2"
            android:textSize="18dp"
            android:text="Select all" />

そしてJavaコードとして、..

selectall.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            int size = 0;
            boolean isChecked = selectall.isChecked();
            if (isChecked == true) {
                size = getListView().getCount();
                for (int i = 0; i <= size; i++)
                    l1.setItemChecked(i, true);
            } else if(isChecked==false)
            {
                size = getListView().getCount();
                for (int i = 0; i <= size; i++)
                    l1.setItemChecked(i, false);
            }
        }
    });

ここでは、l1 を my として割り当てていListViewます。これで、[すべて選択] チェック ボックスが、ListView.

しかし、すべて選択チェックボックスをクリックした後にアイテムの1つを選択解除すると、チェックが解除されません..

また、リスト内のすべてのチェック ボックスを手動で選択すると、[すべて選択CheckBox] が自動的にオンになる必要があります。

ListAdapter に次のコードを使用しました

ArrayAdapter<String> adapter1 = new ArrayAdapter<String>
       (this,Android.R.layout.simple_list_item_multiple_choice,list);
     setListAdapter(adapter1);
     l1=getListView();

私はこの解決策を達成しようとしています..

4

1 に答える 1

1

HashMap または theObjectRow の List を使用て、どの sheckbox がブール値でチェックされているかを追跡できます。

次に、checkAllをクリックすると、リスト内のすべてのブール値を true に更新し、yourAdapter.notifyDataSetChanged(); を実行します。

もちろん、アダプタ(baseadapter など)では、GetView の HashMap/List を使用してセルを初期化します。

if(list.get(position).isChecked()){
    cellHolder.checkBox.setChecked(true);
}
else{
    cellHolder.checkBox.setChecked(false);
}

すべてのブール値が true であるため、すべての checkBox がチェックされます (同じロジックが uncheck に適用されます)。

それが幸運を助けることを願っています

于 2013-06-18T10:14:20.157 に答える