【问题标题】:Android: custom separator (or even item) in ListView depening on content of itemAndroid:ListView中的自定义分隔符(甚至项目)取决于项目的内容
【发布时间】:2010-12-09 01:04:00
【问题描述】:

我有一个 ListView,其中的项目包含有关具有 ratingdistance 到当前位置的地点的信息。

项目被分组:

  • 第一组:500m以内
  • 第二组:500m - 1km
  • 第三组:1km - 1.5km
  • ...

在这些组中,项目按其评级排序。

现在我通过我的自定义适配器(BaseAdapter 的扩展名)将这些项目放入 ListView 中,效果很好。

但是,我想做的是在每个组的每个第一项之前放置一个分隔符。此分隔符可以是 TextView 表示例如500m - 1km 后跟该组中的所有 ListView 项目。

知道如何实现这一点吗?

【问题讨论】:

    标签: android listview separator


    【解决方案1】:

    Here is one implementation 完全符合您的描述。

    那是 GPLv3,因为它源自 this implementation,即 GPLv3。

    您也可以使用我的MergeAdapter,它具有 Apache License 2.0 的优势。只需将一组交替的标题 TextViews 和 Adapters 交给它,其中包含每个部分的内容价值。

    或者,您可以查看所有这些并将它们的行为纳入您现有的Adapter 类。诀窍是在正确的位置返回您的TextView 标头,并正确实现getViewTypeCount()getItemViewType()areAllItemsEnabled()isEnabled() 等方法。

    【讨论】:

    • 你有截图吗?
    • 在我的高级 Android 书中有一个屏幕截图。 Jeff Sharkey 的网站上有第二个的屏幕截图,如上所示。反正我没有第三个的屏幕截图,很大程度上是因为它不是 MergeAdapter 的屏幕截图,而是你倒入 MergeAdapter 的任何屏幕截图。
    • 您的 SectionedAdapter 实现效果很好。谢谢!一个简单的问题:有没有办法从每个部分的最后一个列表项中删除底部分隔符?
    • @Jeffrey:嗯……可能不容易。这些分隔线由 Android 放置在那里,用于所有可选项目。
    • 这是另一个我认为更简单的解决方案bartinger.at/listview-with-sectionsseparators
    【解决方案2】:

    这里有一个更好的实现,灵感来自 iOS 部分列表视图:http://code.google.com/p/android-section-list/。不重要的是,即使您向下滚动部分,部分标题仍然可见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 2010-10-12
      • 1970-01-01
      • 2015-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多