我使用SparseBooleanArray来获取listView中选中的词条的位置:
// lv is my listview
final SparseBooleanArray checkedItems = lv.getCheckedItemPositions();当我检查列表项时,这很好。但是,当我不从listview中选中一个项目时,它的大小并没有减少。它仍然保持原样。
让我解释一下正在发生的事情:
我首先选择了3个词条,并将checkedItems的大小作为3,但是当我从列表中取消选中一个项目时,它的大小不会更改为2,它仍然是3。
需要做些什么?请帮帮我。
石头
发布于 2011-07-05 19:23:40
SparseBooleanArray将整数映射到布尔型。size()方法不返回包含的true项数,而是返回存储的项数。其中一些项目可能是false。
如果您想知道选中的项的数量,可以在SparseBooleanArray上迭代,当选中的状态更改时调用isItemChecked(),或者如果您在API 11+ (蜂窝)上,可以调用getCheckedItemCount()来跟踪选中的项的数量。
发布于 2012-02-23 09:09:33
SparseBooleanArray不包含所有行的详细信息。键包含行的索引,如果选中,则包含值。如果选中一行,然后取消选中,则数组将包含该行的一个条目。因此,要处理此问题,您需要执行以下操作:
通过调用int lSize = ObjectOfSparseBooleanArray.size().
for(int i = 0; i < lSize; i++) {
int lPos = ObjectOfSparseBooleanArray.keyAt(i);
boolean lIsChecked = ObjectOfSparseBooleanArray.get(lPos);
https://stackoverflow.com/questions/6587237
复制相似问题