我的场景:
- 我正在多选模式下使用列表视图,以使用户能够删除他/她检查过的几个项目。
- 当用户单击删除按钮时,我执行以下操作:
- 使用以下位置获取已检查项目的位置:myList.getCheckedItemPositions();
- 获取此位置的项目并将它们放入列表中 - toDeleteList。
- (基于此步骤的问题)使用myList.setItemChecked(位置, false)取消选中列表项目。
-Remove在“toDeleteList”Android列表视图问题澄清
现在的项目,我是“被迫”取消手动列表项,因为myList.getCheckedItemPositions的结果()从MYLIST ..即
删除后不会改变例如,我删除列表[a,b,c,d]的第一项(a),b 将在删除后出现检查即。在列表中列出[b,c,d] - 删除a后。
问题是为什么?因为SparseBooleanArray由 返回myList.getCheckedItemPositions(); 之前和一样,使用适配器从列表中删除。
我认为(我可能是错的),其通过适配器从列表中删除 一个项目之后,CheckedItemPositions阵列也应该改变,以反映 列表
如新的状态。 - MYLIST = [A,B,C,d]
- 然后我检查项目位置0和3检查(一个& d)
- 检查的项目位置(mylist.getCheckedItemPositions())阵列现在 具有值如果我从列表中删除了& d,因此,mylist = [b,c], mylist.getCheckedItemPositions()仍然与上面的ie相同,即,如果我删除了& d。从列表中删除的项目后,仍然检查位置0和3(我认为这是不正常的 - 但我可能是错的)
- 我期待它不被检查的位置0 & 3因为 项目是以前在这些职位上已不在列表中。
我在这里得到错误的东西(或有错误 期望:))?有人请事先弄清楚这个..
谢谢,
谢谢..我明白你的意思,但我想如果我在新列表中使用mylist.getCheckedItemPositions(),即。与以前检查的项目不再在列表中(使用adapter.remove()..)后) - 结果应为空/空,因为我的列表不再包含选中的项目.. - 也许你是对的,谢谢 – cire 2009-12-09 17:00:51
所有的东西你需要调用方法listView.getCheckItemIds(),它将返回checkeds项的id,它适用于我,而不会覆盖任何东西;)。方法getcheckedItemPositions()不工作:) – Houcine 2012-01-14 16:25:44