gpt4 book ai didi

android - 使用复选框过滤 ListView

转载 作者:行者123 更新时间:2023-11-30 03:48:36 26 4
gpt4 key购买 nike

我正在使用最新的 Android SDK,我想使用 CheckBoxes 过滤代表不同植物列表的 ListView

在我的列表中,我有 800 个具有不同属性(例如颜色、大小、可食用性)的项目,CheckBoxes 应该以减法方式过滤列表。只有匹配所有属性的列表项/ View 应该是可见的 - 所有其他行应该是不可见的(该程序应该像 www.pilzsuchmaschine.de 上的过滤系统一样工作)。

我试图修改我的自定义 ArrayAdaptergetView(),但我不知道如何正确地执行此操作。有人有解决方案吗?

我的 ArrayAdapterthis one 非常相似.

最佳答案

I tried to modify the getView() of my custom ArrayAdapter but I didn't get the right idea how to do that properly. Does anyone have a solution?

您不在 getView() 方法中进行过滤。首先在所有过滤器 CheckBoxes 上设置一个 OnCheckedChangeListener 以监视它们的状态(每个 CheckBoxes 都应该有一个 boolean变量来保持其状态)。当选中/取消选中过滤器 CheckBox 时,更新状态变量,然后过滤 ListView。可以通过两种方式过滤 ListView,手动或使用专用机制(Filter 类)。

手动地,当用户选中一个 CheckBox 时,您将获取过滤器 CheckBoxes 的所有状态,并将它们与植物列表中的每个元素进行匹配。哪个元素匹配所有 CheckBoxes 状态是有效的,应该添加到新列表中。完成后,使适配器指向新创建的列表并调用 notifyDataSetChanged()。我不会采用这种方法,因为您有很多项目。

正确的方法是制作您自己的适配器及其 Filter 方法(在这种情况下,适配器将保存过滤器 CheckBoxes 的状态)。当用户选中过滤器 CheckBox 时,调用适配器上的方法来更新相应的 bool 状态。还调用适配器上的 getFilter() 方法并执行过滤:((Filterable) adapter).getFilter().filter(null)。那里有很多关于为适配器实现 Filter 的教程。

关于android - 使用复选框过滤 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14538380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com