8

このメソッドを使用して、チェックされたリストの項目数を確認していますが、11 より古い SDK ではこのメソッドを使用できないというエラーが表示されます。

APIレベル8でこれに相当するものは何ですか

4

3 に答える 3

12

受け入れられた回答はうまくいきませんでした (常に 0 を返します)。次のコードを使用する必要がありました。

public static int getCheckedItemCount(ListView listView)
{
    if (Build.VERSION.SDK_INT >= 11) return listView.getCheckedItemCount();
    else
    {
        int count = 0;
        for (int i = listView.getCount() - 1; i >= 0; i--)
            if (listView.isItemChecked(i)) count++;
        return count;
    }
}
于 2013-06-28T14:44:58.707 に答える
5

getCheckedItemIds().lengthトリックを行うようです

于 2013-01-07T10:21:39.740 に答える
1

私はこのコードを使用しています。これは効率的で、すべての場合に機能すると信じています。

public int getCheckedItemCount() {
    ListView listView = getListView();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        return listView.getCheckedItemCount();
    }

    SparseBooleanArray checkedItems = listView.getCheckedItemPositions();
    int count = 0;
    for (int i = 0, size = checkedItems.size(); i < size; ++i) {
        if (checkedItems.valueAt(i)) {
            count++;
        }
    }
    return count;
}

うまくいかないケースがありましたらお知らせください。

于 2014-11-10T09:09:22.713 に答える