whats the equivilent of getCheckedItemCount() for API level < 11?

后端 未结 3 615
日久生厌
日久生厌 2021-01-05 05:15

I am using this method to check how many items on a list a checked and I get this error that this method is not available for any SDK older than 11.

What is the equi

相关标签:
3条回答
  • 2021-01-05 05:52

    getCheckedItemIds().length seems to do the trick

    0 讨论(0)
  • 2021-01-05 05:53

    I'm using this code which I believe is efficient and works in all cases:

    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;
    }
    

    Please inform me if you find a case where it doesn't work.

    0 讨论(0)
  • 2021-01-05 05:55

    The accepted answer didn't work for me (always returns 0), I had to use the following code:

    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;
        }
    }
    
    0 讨论(0)
提交回复
热议问题