Android:GridView是否可以基于具有过滤能力的适配器?

Android:GridView是否可以基于具有过滤能力的适配器?,android,gridview,filter,adapter,Android,Gridview,Filter,Adapter,背景: 我有一个GridView基于一个相当复杂的Adapter类,该类扩展了BaseAdapter。我发现我在getView中做了太多的工作来计算要显示的内容,而且在这些计算过程中,我要显示的项目数经常会发生变化getView甚至会为同一位置调用多次。似乎调用notifyDataSetChanged()太快了 这给我的编码带来了很大的痛苦。我将大部分代码移到了其他例程中,但发现在最终显示期间仍需要对选择进行一些过滤 我已经通过设置项来解决这个问题。enabled(false),这是可行的,但我

背景:
我有一个GridView基于一个相当复杂的Adapter类,该类扩展了BaseAdapter。我发现我在getView中做了太多的工作来计算要显示的内容,而且在这些计算过程中,我要显示的项目数经常会发生变化getView甚至会为同一位置调用多次。似乎调用notifyDataSetChanged()太快了

这给我的编码带来了很大的痛苦。我将大部分代码移到了其他例程中,但发现在最终显示期间仍需要对选择进行一些过滤

我已经通过设置项来解决这个问题。enabled(false),这是可行的,但我宁愿一起删除该项

我找不到GridView&底层适配器的生命周期,但我已经确定getCount()在显示项目之前会被多次调用,虽然我可以在其中挂接我的更改,但感觉我在这里工作得太辛苦了

问题:
我可以在与绑定到GridView的适配器的连接中使用过滤器类吗

例如,GridView的我的适配器有36个项目要显示,而包含它的活动有一个TextView设置为值“3”,这意味着只显示第三个项目adapter.notifyDataSetChanged()被调用并立即。getCount()想要返回36,这确实会给getView造成麻烦

我知道这里没有太多的细节,因为我需要理解概念,而不仅仅是为特定问题找到解决方案


一定有某种功能或方法可以解决我忽略的问题。

您是否覆盖了
getCount
?为什么在基础数据发生变化后它会返回36

如果您使
getCount
依赖于基础数据,我认为您不会遇到以下问题:

@Override
public int getCount() {
    return myArray.length; // or whatever your underlying data source is
}
编辑-另外,请确保在调用
notifyDataSetChanged
之前对数据集进行了更改