android - 将 CheckedTextViews 的 ListView 与过滤器一起使用

标签 android listview checkedtextview

我正在尝试编写一个充满 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/

相关文章:

android - 在水平线性布局内的动态 ImageView 中查看屏幕外

java - 自定义 ListView 中的弹出菜单

android - 具有多个用于平板电脑的项目列的 ListView ?

以编程方式设置 android.R.attr.listChoiceIndicatorMultiple 时的 android.content.res.Resources$NotFoundException

android - 融合位置 GPS 在打开 Google map 之前不会更新

java - android studio java 以非零退出值 2 结束

java - ExpandableListView 中的relativelayout 不起作用

android - 以编程方式访问 CheckedTextView 列表中的特定行 - Android

android - CheckedTextView 不响应点击

java - 如何处理除以 0