首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Listview.getCheckedItemPositions()在未选中项时不返回正确的结果

Listview.getCheckedItemPositions()在未选中项时不返回正确的结果
EN

Stack Overflow用户
提问于 2011-07-05 18:33:51
回答 2查看 4.1K关注 0票数 7

我使用SparseBooleanArray来获取listView中选中的词条的位置:

代码语言:javascript
复制
// lv is my listview
final SparseBooleanArray checkedItems = lv.getCheckedItemPositions();

当我检查列表项时,这很好。但是,当我不从listview中选中一个项目时,它的大小并没有减少。它仍然保持原样。

让我解释一下正在发生的事情:

我首先选择了3个词条,并将checkedItems的大小作为3,但是当我从列表中取消选中一个项目时,它的大小不会更改为2,它仍然是3。

需要做些什么?请帮帮我。

石头

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-05 19:23:40

SparseBooleanArray将整数映射到布尔型。size()方法不返回包含的true项数,而是返回存储的项数。其中一些项目可能是false

如果您想知道选中的项的数量,可以在SparseBooleanArray上迭代,当选中的状态更改时调用isItemChecked(),或者如果您在API 11+ (蜂窝)上,可以调用getCheckedItemCount()来跟踪选中的项的数量。

票数 13
EN

Stack Overflow用户

发布于 2012-02-23 09:09:33

SparseBooleanArray不包含所有行的详细信息。键包含行的索引,如果选中,则包含值。如果选中一行,然后取消选中,则数组将包含该行的一个条目。因此,要处理此问题,您需要执行以下操作:

通过调用int lSize = ObjectOfSparseBooleanArray.size().

  • Run循环来获得大小,如for(int i = 0; i < lSize; i++) {

  • Get行号int lPos = ObjectOfSparseBooleanArray.keyAt(i);

  • Get是行的检查boolean lIsChecked = ObjectOfSparseBooleanArray.get(lPos);

  • Do您对所选行的处理!
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6587237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档