2

私は ListView を使用してMULTIPLE_CHOICEおり、選択したアイテムを取得するためにsetItemChecked()メソッドを使用しています。

以前にチェックしたアイテムを見ることができるので、うまくいきます。問題は、以前にチェックしたアイテムの1つをチェック解除してから 、アレイによってチェックされたアイテムのリストを取得すると、チェックを外したアイテムがまだ残っていることです。custList.getCheckItemIds()

それが起こるはずなのか、それとも何か足りないのか、誰か教えてもらえますか?

4

3 に答える 3

1

ここで setOnCheckedChangeListener を呼び出す必要があり、このリスナー ブロック内のコードを管理する必要があります。

checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
              // Write and manage your code here.
        }
});
于 2011-11-30T13:56:51.870 に答える
0

特定の時点でチェックされている項目を単純に見つけようとしている場合は、ListView から SparseBooleanArray を取得し、for ループで反復処理できます。例えば:

SparseBooleanArray checked = list.getCheckedItemPositions();

for (int i = 0; i < checked.size(); i++){
    if (checked.get(i))
        //the item at index i is checked, do something
    else
        //the item is not checked, do something else
}
于 2012-06-06T04:08:39.253 に答える
0

これ:

SparseBooleanArray checked = list.getCheckedItemPositions();

for (int i = 0; i < checked.size(); i++){
    if (checked.get(i))
        //the item at index i is checked, do something
    else
        //the item is not checked, do something else
}

動作しません。

複数の連絡先ピッカー リスト [getCheckedItemPositions()]に従う

大丈夫なはず。

SparseBooleanArray selectedPositions = listView.getCheckedItemPositions();

for (int i=0; i<selectedPositions.size(); i++) {
    if (selectedPositions.get(selectedPositions.keyAt(i)) == true) {
        //do stuff
    }
}
于 2013-01-23T05:33:38.553 に答える