我正在尝试编写一个充满 CheckedTextView 的 ListView 并使用过滤器允许用户快速搜索 ListView (由带有自定义 ArrayAdapter 的数组支持)。我已经设定 声明 ListView 的 XML 中的 multipleChoice 标志和我 可以在不使用过滤器时选中/取消选中多个条目。什么时候 使用过滤器搜索条目,我可以选择一个条目。 但是,当我清除过滤器(通过按退格键)时,条目位于 相同的位置仍然被选中,尽管它不再是 我要检查的实际条目。
我已经尝试在 CheckedTextView 上手动设置选中状态 在适配器的 getView() 方法中,但这似乎不是 在职的。只是为了咧嘴一笑,我尝试将 isChecked 设置为 false 每个 ListView 中的 CheckedTextView,但 CheckedTextView 在使用过滤器时被选中。
有没有人幸运地实现了这样的东西或者有任何 推荐?
谢谢 亚当
最佳答案
您可能想看看 ListView#clearChoices() . ListView 本身根据适配器项目的位置维护选择,而不是项目的 id。因此,如果位置发生变化(例如,通过过滤),选择位置基本上不再有效。
它也维护一个已检查 ID 的列表,您可以使用 ListView#getCheckedItemIds() 检索它,并且只要您的适配器具有稳定的 ID(即,特定 ID 始终 指代相同的概念项目,并且不随项目的顺序或过滤而变化),您可以使用它在过滤更改时恢复选中的位置(您必须迭代整个适配器才能将 id 与位置匹配)。
关于android - 将 CheckedTextViews 的 ListView 与过滤器一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6419836/