【问题标题】:Android: Is it possible to base a GridView on an adapter with filter capabaility?Android:是否可以将 GridView 建立在具有过滤功能的适配器上?
【发布时间】:2011-03-15 15:29:03
【问题描述】:

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

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

我已经通过设置 item.enabled(false) 来解决这个问题,它可以工作,但我宁愿将这个项目全部删除。

我找不到 GridView 和底层适配器的生命周期,但我确定 getCount() 在项目显示之前被调用了多次虽然我可以将我的更改挂在那里,但感觉就像我不得不在这里工作太努力了。

问题:
我可以将 Filter 类与绑定到 GridViewAdapter 连接使用吗?

例如,我的 GridView 适配器有 36 个要显示的项目,包含它的 Activity 的 TextView 设置为值“3”,这意味着只显示每第 3 项。 adapter.notifyDataSetChanged() 被调用并立即 .getCount() 想要返回 36,这真的与 getView

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

必须有一些功能或方法来查看我忽略的问题。

【问题讨论】:

    标签: android gridview filter adapter


    【解决方案1】:

    你是否覆盖了getCount?为什么底层数据发生变化后会返回36?

    如果你让getCount 依赖于基础数据,我认为你不会有这个问题:

    @Override
    public int getCount() {
        return myArray.length; // or whatever your underlying data source is
    }
    

    编辑 - 另外,请确保在调用notifyDataSetChanged之前对数据集进行更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 2020-06-30
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      相关资源
      最近更新 更多