什么是等级的getCheckedItemCount()用于API级别< 11?

时间:2012-09-08 12:15:52

标签: android compatibility

我正在使用此方法检查列表中已检查的项目数,并且我收到此错误,指出此方法不适用于任何早于11的SDK。

API级别8中的等效内容

3 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:5)

getCheckedItemIds().length似乎可以解决问题

答案 2 :(得分: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;
}

如果您发现不起作用的情况,请通知我。