对于API级别<11,getCheckedItemCount()的等价性是什么?

cod*_*441 8 compatibility android

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

API级别8中的等价物是什么

Tak*_*ion 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这通常意味着`SparseBooleanArray`被滥用.它不是所有已检查项的数组,它是已修改的稀疏项目数组,稀疏数组中的值是一个布尔值,表示是否已检查.你不能使用`SparseBooleanArray#size()`来确定`count` - 你必须迭代`SparseBooleanArray`并检查值以确保它是真的. (2认同)

vha*_*ron 5

getCheckedItemIds().length 似乎可以做到这一点