1

大家都知道GridView不像ListView那样支持页眉和页脚。在GridView中实现标题支持的最佳方式是什么?

有几种方法可以实现这一点:

  • 手动使用ListView和形式columnt通过ViewGroups。它不适合我,因为它需要很多布局操作,比如测量和布局,并且很难在顶部实现绘图选择器。
  • 使用特殊适配器。它可以很好地处理页脚:我们应该使用Space填充最后一个单元格,然后在页脚之后手动插入宽度等于GridView宽度的页脚。但是这不适用于标题:虽然标题被拉伸,但下一个单元格浮动。
  • 使用GridLayout。 GridLayout很好,但500-1000个单元的性能如何? AdapterView支持缓存和重用视图,据我所知,这是不可能与GridLayout。
  • 扩展GridView并编写自定义类,该类允许在网格内容之前绘制标题。这很困难,但它应该工作得非常快。让我们试图弄清楚如何做到这一点:

    1. 测量标题。这很简单,我对此没有疑问。
    2. 网格顶部的布局标题。我们也应该考虑使用滚动位置来允许整个网格内容移动标题,所以我的第一个问题是:如何知道在滚动时底部边框应该位于哪里?
    3. 在标题后面布置整个网格内容。怎么做?我以前更新过。
    4. 调度绘制到标题视图也解决超滚动效果,如果它不好。
    5. 处理滚动事件和刷新标题位置。

那么你可以建议我吗?如何做标题偏移量?用每个滚动事件调用转播是否正确?

回答

0

我搜索了与GridView(但为FooterView)相同的情况的答案。

我已经仔细阅读了你的建议,还有一些来自其他网站。我有同样的反思。我发现一个简单的方法作为你的提示:“使用特殊的适配器,它可以很好地处理页脚......”和this answer by @RaulSoto帮助了我很多。但是当我试图更新我的gridview时,我有一个NPE,因为我的页脚不像我的项目的布局,我有一个自定义过滤器,重新计算getCount()方法,但不明白添加了另一个视图。

最后,我发现只有解决方案的工作原理:自定义类

创建自己的类,你说:“扩展GridView和编写自定义类没有扩展GridView控件。您应该使用ListView进行扩展并测量整个宽度,列宽和列数。我认为,扩展GridView,计算标题视图的高度并在移动GridView时移动它,或者在每次处理滚动事件时刷新标题都不那么困难。
我搜索了这样做,我把这个小项目放在GitHub上:HFGridView by Sergey Burish。这正是我所需要的,没有更多。
我只在自己的应用程序中添加了自定义attrs文件,并自定义了他的项目以获得预期的结果(特别是,纵向上有一列,横向模式下有两列,引用布局中的numColumns属性)。
当我尝试,只是为了测试,添加HeaderView并刷新内容添加新项目,标题视图停留在我的gridview列表的顶部,而不刷新自己。

所以,我认为你应该搜索创建你的课程GridView extends ListView。请参阅SBurish的HFGridView,了解它的工作过程非常简单。

希望这可以帮助你与你的目的。

相关问题