0

単純なリストを複数選択しようとしていListViewますが、たとえば項目番号 1 と 3 を選択すると、返される値は番号 1 と 2 になります。5 つのランダムな選択肢を選択すると、返される値は最初の 5 つになります。値。

SparseBooleanArray checked = modeList.getCheckedItemPositions();
for (int i = 0; i < checked.size(); i++) {
        if (checked.valueAt(i) == true) {
            String tag = (String) modeList.getItemAtPosition(i);
            checkedItems.add(tag);
        }
}

そして、私が言ったように、何を選択しても、選択肢がランダムに選択されたとしても、値は常にリストの最初の項目を返します。

4

1 に答える 1

1

SparseBooleanArray少しトリッキーです。次のような構造を使用する必要があります。

SparseBooleanArray checked= listView.getCheckedItemPositions();
for (int i = 0; i <= checked.size(); i++) {
     if (checked.valueAt(i)) 
        yourListAdapterArray[checked.keyAt(i)];
}

また、その必要はありません:

if (checked.valueAt(i) == true)

シンプルに使用する方が良い:

if (checked.valueAt(i))
于 2013-05-09T20:10:10.257 に答える